Meteor.wrapAsync似乎不适用于db集合插入

时间:2015-02-24 17:44:22

标签: meteor

我有以下异步Meteor方法。但是,createItem()不会在返回之前等待Items.insert的回调。

# Relevant pieces shown here (coffeescript, more parens than usual for js folks :-)

Meteor.methods(
  createItem : (doc, callback)->
    asyncInsert = Meteor.wrapAsync( Items.insert, Items )
    results = asyncInsert( doc, (err, result) ->
      return callback(err, result)
    )
    return results
)

asyncMeteorCall = Meteor.wrapAsync( Meteor.call )
status = asyncMeteorCall( "createItem", {name:"some item"}, (err, result)->
  if err?
    return "Error adding Item"
  else
    return "Successfully added Item"
)

console.log( status ) # prints : undefined 

我确实找到了这个possibly related issue,但不确定它是否相关,我实际上是在服务器上执行上述所有操作。

1 个答案:

答案 0 :(得分:2)

接受回调的所有Mongo.Collection方法在服务器上调用时会自动同步运行(只要省略回调),因此不需要包装它们。您应该可以直接致电Items.insert()

来自Meteor docs

“在服务器上,如果您不提供回调,则插入块直到数据库确认写入,或者如果出现错误则抛出异常。”