【发布时间】:2011-11-03 16:27:41
【问题描述】:
使用 Vows/Coffeescript/Mongoose 并遇到 DB 的异步问题。
在我的测试运行之前,我做了很多设置,包括清除测试数据库。一旦我在最后一个文档上调用了 remove,我就会触发回调,以便 Vows 可以继续测试的下一步。问题在于,由于事情是异步发生的,因此无法保证数据库实际上已被清除。在这种情况下,我实际上想要同步,但我不知道如何做到这一点。
这是代码(Vows sn-p 然后是清除函数 def):
'AND the test database is empty':
topic: ->
testDB.purge "widgets_test", @callback
purge = (database, callback) ->
db = mongoose.connect "mongodb://localhost/#{database}"
modelCount = Models.length
for model in Models
modelCount--
model.find {}, (err, docs) ->
docCount = docs.length
for doc in docs
doc.remove (err) ->
docCount--
# do callback after all data has been purged - setTimeout HACKHACKHACK
if modelCount is 0 and docCount is 0
setTimeout ->
callback()
, 100
这样做的正确方法是什么?
【问题讨论】:
标签: node.js coffeescript mongoose