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,但如果我放弃承诺而只使用回调,我会得到相同的结果。
我究竟做错了什么?