2016-04-24 10 views
0

Meteorでは、クライアント上でCollection.update()(1)の戻り値を使用してメッセージを表示します。このメソッドは、クライアントとサーバーの両方で実行されます。コールバック付きのCollection.update()は未定義を返します

が期待通りに動作し、以下の方法で、(1を返す)考えてみましょう:私はここで何をしないのです

Meteor.methods({ 
    updateDocument(documentId) { 
     return Collection.update(
      documentId, 
      {$set: {updatedBy: this.userId}}, 
      (error, result) => { 
       return 1; 
      } 
     ); 
    } 
}); 

Meteor.methods({ 
    updateDocument(documentId) { 
     return Collection.update(
      documentId, 
      {$set: {updatedBy: this.userId}} 
     ); 
    } 
}); 

次に、undefinedを返す次のメソッドを、考えますか?どうしてですかupdateDocument()返信1

答えて

2

コールバック関数を指定すると、updateコールは非同期です。何も返されず、更新が完了する前にMeteorメソッドが終了することがあります。 Meteor docsから引用

サーバー上

、データベースが書き込みを認め、または 何かが間違っていた場合に例外をスローするまでブロック を更新し、コールバックを提供しない場合。コールバックを提供すると、すぐに が返されます。更新が完了すると、エラーの場合は 単一エラー引数、更新が の場合は影響を受けるドキュメントの数を示す2番目の引数 がコールバックに呼び出されます。

+0

ありがとうございます。分かったと思います。今、アップデートが成功したことをユーザに知らせるにはどうすればよいですか?言い換えれば、それが呼び出すメソッドが何も返さない場合、クライアント上のイベント関数はドキュメントが正常に更新されたことをどのように知ることができますか? –

+0

エラーが発生した場合、同期 'update'関数は例外をスローします。良いポケモンのマスターと 'すべてをキャッチしてください。 :) – aedm

関連する問題