0

次のようなメソッドがあるとします。

commentsInsert: (comment) ->
  Comments.insert comment, (err) ->
    throw err if err
    updateCommentCounts()

ここでの目標はupdateCommentCounts、挿入が失敗した場合の呼び出しを避けることです。このコードがサーバー上でのみ実行される場合、コールバックとthrow? 例えば:

commentsInsert: (comment) ->
  Comments.insert comment
  updateCommentCounts()

流星のドキュメントは次のように述べています。

サーバー上でコールバックを提供しない場合は、データベースが書き込みを確認するまでブロックを挿入するか、何か問題が発生した場合は例外をスローします。

これは、関数から抜け出し、呼び出し元にエラー コードを返すことを意味すると思います。そうですか?

4

1 に答える 1

0

これをテストするために、コメント コレクションに一意のインデックスを追加し、2 つの同一の挿入を行いました。2 番目の挿入は (予想どおり) エラー500をスローし、クライアントに a を送信して、メソッドから抜け出しました。私の質問に対する答えは、はい、コールバックをスキップできます。

于 2013-05-17T17:53:34.883 に答える