在 Node.js/Mongoose/Mongo 上是
SomeModel.findOne({_id: id}, callback).populate('ref')
相当于
SomeModel.findOne({_id: id}).populate('ref').exec(callback)
“ref”是单个文档(不是数组)。
问题是,使用第一种语法,调用回调时,“子”文档随机不会填充。
最佳答案
我不知道内部原理,但我想说它们不一样。
第一个可能是这样做的:
- 查找文档
- 使用文档调用回调
- 填充引用(这是通过单独的查询完成的)
第二个可能会这样做:
- 查找文档
- 填充引用
- 当引用被解析时调用回调
您所看到的随机性是因为“填充引用”调用如果足够快,可能会在您在回调中使用它之前填充文档。换句话说:a race condition .
关于node.js - Mongoose 种群 - 回调与执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31427033/