我正在通过将字符串转换为 BSON 来进行 MongoDB 查找。有没有办法让我在进行转换之前确定我拥有的字符串是否是 Mongo 的有效 ObjectID?
这是我当前的 findByID 函数的 coffeescript。它工作得很好,但如果我确定字符串不是 ID,我想通过不同的属性进行查找。
db.collection "pages", (err, collection) ->
collection.findOne
_id: new BSON.ObjectID(id)
, (err, item) ->
if item
res.send item
else
res.send 404
原文由 Will 发布,翻译遵循 CC BY-SA 4.0 许可协议
我发现 mongoose ObjectId 验证器可以验证有效的 objectId,但我发现在一些情况下无效的 id 被认为是有效的。 (例如:任意 12 个字符长的字符串)
对我有用的是将字符串转换为 objectId,然后检查原始字符串是否与 objectId 的字符串值匹配。
这是有效的,因为有效的 id 在转换为 ObjectId 时不会改变,但是当转换为 objectId 时,获得错误有效的字符串将改变。