【问题标题】:Retrieve _id after insert in a Meteor.method call插入 Meteor.method 调用后检索 _id
【发布时间】:2013-05-02 14:06:28
【问题描述】:

插入文档后我需要检索_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.
}

【问题讨论】:

    标签: meteor


    【解决方案1】:

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

    在客户端,如果你不传递回调并且你不在存根中,调用将返回 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

    【讨论】:

    • 我必须这样写才能让它工作:saveDocument: function (value1, value2) { var newDoc = MyCollection.insert({ 'value1': value1, 'valu2': value2}); return newDoc; }
    【解决方案2】:

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

    Collection.insert({
        something: something    //insert to Mongo
    }, (error, response) => {
        console.log(error, result   //get the response
    )});
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 2014-09-08
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多