我希望能够通过用户名或ID在我的MongoDB中找到用户(使用Mongoose)。
使用:User.find({ $or: [ { _id: req.params.userId }, { username: req.params.userId } ]}, ...
在我传递一个字符串时抛出错误:
对于模型\“User \”“
,路径\”_ id \“的对象\”用户名\“的转换为ObjectId失败
我理解为什么我会收到错误,但有一个简单的方法吗?
答案 0 :(得分:1)
测试req.params.userId
是否有效ObjectId
,然后基于此汇总您的查询:
let query = {};
if (req.params.userId.match(/^[0-9a-fA-F]{24}$/)) {
query._id = req.params.userId;
}
else {
query.username = req.params.userId;
}
User.find(query, ...);