mongodb - Model.findOne 没有按预期工作?
问题描述
[
{
"userId": "5bb6730721f28a295436b36e",
"reputationNumber": 0,
"questions": [],
"answers": [],
"id": "5bb6730721f28a295436b36f"
},
{
"userId": "5bb6738c21f28a295436b370",
"reputationNumber": 0,
"questions": [],
"answers": [],
"id": "5bb6738c21f28a295436b371"
}
]
我在模型 userDatas 中有 2 个元素,我想通过使用 userId 属性过滤来找到单个 userData。
这就是我所做的
Userdatas.findByUserId = function(req, res, cb) {
const queryId = req.query.userId
console.log("queryId: ",queryId);
Userdatas.find({ userId: "5bb6738c21f28a295436b370"}, function(err, obj){
console.log(obj);
var userData = obj;
cb(null, userData);
});
}
令人惊讶的是,控制台输出是,
[ { userId: '5bb6730721f28a295436b36e',
reputationNumber: 0,
questions: List [],
answers: List [],
id: 5bb6730721f28a295436b36f },
{ userId: '5bb6738c21f28a295436b370',
reputationNumber: 0,
questions: List [],
answers: List [],
id: 5bb6738c21f28a295436b371 } ]
我期望的是,
{
"userId": "5bb6738c21f28a295436b370",
"reputationNumber": 0,
"questions": [],
"answers": [],
"id": "5bb6738c21f28a295436b371"
}
但是该查询在 robo mongo shell 中完美运行。
解决方案
在环回“find”和“findOne”函数中接受这种模式的查询:{where:{queryFilters}}
因此,在您的示例中,您可以像这样更改它:
Userdatas.findByUserId = function(req, res, cb) {
const queryId = req.query.userId
console.log("queryId: ",queryId);
Userdatas.findOne({ where:{userId: "5bb6738c21f28a295436b370"}}, function(err, obj){
console.log(obj);
var userData = obj;
cb(null, userData);
});
}
"strictObjectIDCoercion": true
在选项添加属性下打开 user-datas.json 。
推荐阅读
- r - 来自迭代过滤的子集(列的级别)
- angular - 如何在树结构中将数据与 Angular 中的相同元素组合
- php - 使用 Laravel 验证现有电子邮件
- java - 嵌套的 FIrebaseRecyclerAdapter
- html - 使用 -webkit-search-cancel-button 时真正隐藏的清除图标
- flutter - MainAxisSize.SpaceEvenly 没有在小部件中提供相等的空间
- python - 为列熊猫数据框中的第一个/最大的值变化按组创建虚拟对象
- asp.net - Stripe - 如何根据卡是欧盟卡还是非欧盟卡收取附加费
- python - 在接受命令行输入的同时从 python 运行 C 程序
- javascript - Ionic React 根据存储在 firebase firestore 上的数据显示喜欢或不喜欢按钮