为什么这个函数会返回一个空文档?还有一个其他函数使用find({})而没有任何查询,它可以工作。
router.get('/mesCandidatures/:id', function(req, res, next) {
Models.Candidature.find({"figurant":req.params.id}, function(err,docs) {
if (err){
throw err;
}else{
res.send(docs);
}
});
});
我发送此参数:59e5d09f853d00049fd67600
我应该收到这个:
{
"_id":"59ea0d1fea79bf099696fcab",
"etat":"validé",
"figurant":"59e5d09f853d00049fd67600",
"offre":"59e5bc1438950e01ae45d1d2"
}`
由于
答案 0 :(得分:1)
你的代码中有一个回调中返回的Query实例,所以在find()
的情况下,你必须使用exec()
来获取mongoose,以便知道何时必须执行它,所以你的请求应
router.get('/mesCandidatures/:id', function(req, res, next) {
Models.Candidature.find({ figurant: req.params.id }).exec( function(err,docs) {
if (err){
throw err;
}else{
res.send(docs);
}
});
});
但是,当您需要获取文档列表时,最初使用find()
,如果您需要单个文档,则可以使用findOne()
而不是查询返回可能为空的单个文档。然后你可以像你一样得到你的回调:
router.get('/mesCandidatures/:id', function(req, res, next) {
Models.Candidature.findOne({ figurant: req.params.id }, function(err,docs) {
if (err){
throw err;
}else{
res.send(docs);
}
});
});
此外,除非您没有获得包含"nested.field"
答案 1 :(得分:1)
使用不正确的字段类型figurant
您的req.params.id
是一个字符串,而我猜测您的架构中figurant
已定义为ObjectId
类型,因此您需要按ObjectId
而不是{{}进行过滤{1}}
将您的代码更改为:
string