26

插入文档后,我需要检索 _id。

在客户端:

Meteor.call('saveDocument', value1, value2);

在服务器中

saveDocument: function (value1, value2) {
    MyCollection.insert({ 'value1': value1, 'value2': value2});
}

我已经尝试过在服务器端使用插入的回调函数。这样我可以获得文档的_id,但是在回调函数内部,这不能返回到客户端调用:

saveDocument: function (value1, value2) {
    MyCollection.insert({ 'value1': value1, 'valu2': value2}, 
        function(err, docsInserted){ console.log(docsInserted) }); 
        //Works, but docsInserted can't return to the client.
}
4

2 回答 2

40

您的客户端调用应使用异步样式 - 来自文档

在客户端,如果你不传递回调并且你不在存根中,调用将返回 undefined,你将无法获取方法的返回值。

Meteor.call('saveDocument', value1, value2, function(error, result){
  var theIdYouWant = result;
});

然后你只需从方法中返回 id

saveDocument: function (value1, value2) {
  return MyCollection.insert({ 'value1': value1, 'valu2': value2}); 
}

为了更好地衡量一下文档的这两个部分

http://docs.meteor.com/#meteor_call

http://docs.meteor.com/#insert

于 2013-05-08T12:33:18.673 回答
0

当我遇到同样的问题时发现了这个问题,在客户端使用 .insert() 得到了这个解决方案,它与回调一起工作得很好。像这样的东西:

Collection.insert({
    something: something    //insert to Mongo
}, (error, response) => {
    console.log(error, result   //get the response
)});
于 2018-12-22T22:22:59.293 回答