connect = (uri) ->
new Promise (resolve, reject) ->
db = mongoose.connection
db.on "error", reject
db.on "open", resolve
mongoose.connect uri
connect(MONGO_URI[NODE_ENV]).then ->
console.log "Connected to #{NODE_ENV}"
MyModel.find().exec().then (models) ->
console.log models.length
这导致竞争条件,其中返回的文档数是随机的并且短于集合中的完整数字。但是,如果我将find
包裹在延迟(例如3秒)中,我将获得所有文档。但我的印象是,如果我等待"打开"我就不会遇到这样的竞争状态。事件。我使用Bluebird的承诺,fwiw,但如果我放弃承诺并使用回调,我会得到相同的结果。
我做错了什么?
答案 0 :(得分:0)
这对我的代码来说不是问题。这似乎与this issue有关,因为当我在架构中注释掉所有唯一索引时,它会起作用。这是MongoDB驱动程序中的(仍未解析的)bug。