node.js - Mongoose 种群 - 回调与执行

标签 node.js mongodb mongoose

在 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/

相关文章:

javascript - Node.js:forEach 箭头语句剧

android - linux 上的 'ANDROID_HOME' 环境变量,带有 cordova 未定义的 nodejs

node.js - Express js URL 清理

mongodb - 如何将我的 Mongodb 应用程序连接到在meteor.com 上托管的网站。 meteor js

mongodb - 不区分大小写的 Mongo $in 查询

javascript - Mocha 'before each hook' 消息为红色。我怎么知 Prop 体出了什么问题?

Mongodb TypeError : vehicle. 保存不是函数

node.js - 使用 $set-mongoose 更新字段时保留对象的其余部分

javascript - Mongoose - 保存时数组值不会被覆盖

node.js - Mongoose 自引用架构不为所有子文档创建 ObjectId