在Meteor.method调用中插入后检索_id

Osc*_*aza 25 meteor

我需要在插入文档后检索_id.

在客户端:

Meteor.call('saveDocument', value1, value2);
Run Code Online (Sandbox Code Playgroud)

在服务器中

saveDocument: function (value1, value2) {
    MyCollection.insert({ 'value1': value1, 'value2': value2});
}
Run Code Online (Sandbox Code Playgroud)

我已尝试使用服务器端插件的回调函数.这样我就可以得到文件的_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.
}
Run Code Online (Sandbox Code Playgroud)

nat*_*ser 38

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

在客户端上,如果您没有传递回调并且您不在存根中,则调用将返回undefined,并且您将无法获取该方法的返回值.

Meteor.call('saveDocument', value1, value2, function(error, result){
  var theIdYouWant = result;
});
Run Code Online (Sandbox Code Playgroud)

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

saveDocument: function (value1, value2) {
  return MyCollection.insert({ 'value1': value1, 'valu2': value2}); 
}
Run Code Online (Sandbox Code Playgroud)

为了好的措施,给这两个文档的部分一次性

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

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

  • 我必须这样写它才能工作:`saveDocument:function(value1,value2){var newDoc = MyCollection.insert({'value1':value1,'valu2':value2}); 返回newDoc; }` (3认同)