![](/img/trans.png)
[英]How to convert _bsontype objectID value to string/objectID to insert in mongoDB using node.js
[英]How to check if string is of type ObjectId in Node.js
我有一条路线/api/:id
where:id 必须是 ObjectId 类型。 因为以下是我正在运行的查询
const data = await Person.find({_id:req.params.id})
它工作正常如果:id 是类型ObjectId
但如果用户显式运行 api 让我们说/api/anything
,然后 Mongoose 通过错误
CastError:转换为 ObjectId 失败,因为路径“_id”中的值“anything”
因此,我想检查req.params.id
是否属于ObjectId
类型,只有在是的情况下才执行进一步的操作。
因此代码看起来像
if(checkObjectId(req.params.id)) {
const data = await Person.find({_id:req.params.id})
}
使用猫鼬功能:
if(mongoose.isValidObjectId(req.params.id)) {
const data = await Person.find({_id:req.params.id})
...
}
Mongoose.prototype.isValidObjectId()
如果 Mongoose 可以将给定的值转换为 ObjectId,则返回 true,否则返回 false。
mongoose.isValidObjectId(new mongoose.Types.ObjectId()); // true mongoose.isValidObjectId('0123456789ab'); // true mongoose.isValidObjectId(6); // false
您可以使用 isValid 方法来验证 object id
mongoose.Types.ObjectId.isValid('63d632828e944c3a08f15925')
为什么if
你可以使用try ... catch
let data;
try {
data = await Person.find({_id:req.params.id})
} catch(err) {
console.log('Error retrieving data (Person):', err);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.