您需要获得定义查询选项然后执行的顺序,并且可链接的API(例如mongoose
Query)不知道在查询触发后您可能会调用哪些其他方法。因此,当您将回调传递给时
.find,猫鼬会立即发送查询。
将回调传递给 find
- 由参数定义的查询
find
- 由于存在回调,因此查询将立即执行并向数据库发出命令
- 然后
.populate
发生,但是没有任何效果,因为查询已经发送到mongo
这是您需要做的:
Project.find(query, {}, { sort: { _id: -1 }}).populate("milestones").exec(function (error, results) { callback(results);});或者更具可读性:
Project .find(query) .sort('-_id') .populate('milestones') .exec(function(error, results) { callback(results); });省略回调并使用 .exec
- 查询传递给
.find
创建 带有参数的查询对象 - 对的其他链接调用
.sort
,.populate
等等进一步配置了查询 .exec
告诉猫鼬您已完成配置查询,猫鼬发出了DB命令



