Wil*_*ill 63 javascript mongodb node.js coffeescript express
我通过将字符串转换为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
Run Code Online (Sandbox Code Playgroud)
小智 101
我发现mongoose ObjectId验证器用于验证有效的objectIds,但我发现了一些无效ID被认为有效的情况.(例如:任何12个字符长的字符串)
var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true
Run Code Online (Sandbox Code Playgroud)
对我有用的是将一个字符串转换为objectId,然后检查原始字符串是否与objectId的字符串值匹配.
new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2
Run Code Online (Sandbox Code Playgroud)
这项工作是因为有效ID在转换为ObjectId时不会更改,但获取false有效的字符串在转换为objectId时会更改.
Joh*_*yHK 67
您可以使用正则表达式来测试:
CoffeeScript的
if id.match /^[0-9a-fA-F]{24}$/
# it's an ObjectID
else
# nope
Run Code Online (Sandbox Code Playgroud)
JavaScript的
if (id.match(/^[0-9a-fA-F]{24}$/)) {
// it's an ObjectID
} else {
// nope
}
Run Code Online (Sandbox Code Playgroud)
Som*_*ial 43
isValidObjectId()
内置解决方案> Mongoose 5.7.12如果使用的是猫鼬,我们可以测试一个字符串是否是12个字节或使用的24个十六进制字符字符串猫鼬内建 isValidObjectId。
mongoose.isValidObjectId(string); /* will return true/false */
Run Code Online (Sandbox Code Playgroud)
我过去曾使用本机节点mongodb驱动程序执行此操作.isValid方法检查该值是否为有效的BSON ObjectId.请参阅此处的文档.
var ObjectID = require('mongodb').ObjectID;
console.log( ObjectID.isValid(12345) );
Run Code Online (Sandbox Code Playgroud)
小智 5
如果字符串包含 12 个字母,mongoose.Types.ObjectId.isValid(string) 总是返回 True
let firstUserID = '5b360fdea392d731829ded18';
let secondUserID = 'aaaaaaaaaaaa';
console.log(mongoose.Types.ObjectId.isValid(firstUserID)); // true
console.log(mongoose.Types.ObjectId.isValid(secondUserID)); // true
let checkForValidMongoDbID = new RegExp("^[0-9a-fA-F]{24}$");
console.log(checkForValidMongoDbID.test(firstUserID)); // true
console.log(checkForValidMongoDbID.test(secondUserID)); // false
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38265 次 |
最近记录: |