我正在尝试查找与node.js中的自定义字段匹配的所有文档。
node.js代码:
req.app.db.models.Property.find({
user: {
id: req.params.id
}
}).exec(function(err, user) {
if (err) {
return next(err);
}
console.log("id:" + req.params.id);
console.log("user:" + user);
res.status(200).json(user);
});
但是,控制台显示如下
id:5941cfc42df14b2fe811d531
user:
架构如下所示
user: {
id: { type: mongoose.Schema.Types.ObjectId, ref: 'User' },
name: { type: String, default: '' },
email: { type: String, defaul: ''}
},
propertyType: { type: String, default: '' },
..........
}
似乎无法找到文件。 这有什么不对? Property Collection上有几个文件。
答案 0 :(得分:0)
问题出在你的查询中,它发现一个用户只有一个对象id。 所以你实际上等同的是“user”和“{id:req.params.id}”,它只返回id参数。因此,为您的解决方案做以下事项:
var query = {'user.id':req.params.id}
Property.find(query).exec(function(err, user) {
if (err) {
return next(err);
}
如果要指定返回的对象类型(如果找到)。 您可以按如下方式提及:
Property.find(query,'user.id user.name').exec(...)
这将返回一个仅包含用户ID和电子邮件的对象,而不是名称。