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

クライアント呼び出しは非同期スタイルを使用する必要があります-ドキュメントから

クライアントでは、コールバックを渡さず、スタブ内にいない場合、call は undefined を返し、メソッドの戻り値を取得する方法がありません。

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

次に、メソッドからIDを返すだけです

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

念のため、ドキュメントのこれら 2 つのセクションをもう一度お読みください。

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

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

于 2013-05-08T12:33:18.673 に答える