2016-09-26 5 views
0

私はJSのノードに新しいですし、次のように情報を保存します私のコードでメソッドを持っています。を同時に実行するためのメソッドが参加 - ノードJS

var saveInformation = function(query, update, options) { 
    asyncTasks.push(function(done) { 
    what.findOneAndUpdate(query, update, options, done) 
    }) 
} 

saveInformation(query, update, options) 

私はいくつかのsaveInformationメソッドを呼び出しますこのメソッドが呼び出されるたびにログファイルに書き込む必要があります。これを行う最も簡単な方法は何ですか?

私はちょうどこのように、右後(私はウィンストンモジュールを使用しています)私のログを追加してみました:しかし、これは時々保存し、時々(すなわち、それが唯一しかし、この方法では、一度これをログに記録しますない

saveInformation(query, update, options) 
logger.info('Hello') 

私のプログラムを通して何度も実行する)。

saveInformation行に別のメソッドを追加して、両方が同時に実行されるようにする方法があるのでしょうか。saveInformationがdbsに保存されると、ログも作成されますか?

答えて

0

ロギング関数の呼び出しは、what.findeOneAndUpdateのコールバック(done)でなければなりません。この場合、この操作は各操作の後に実行されます。

// callback for findOneAndUpdate 
var done = function(err, result) { 
    if(err) { 
     throw err 
    } 
    logger.info('Result of findOneAndUpdate: ', result) 
} 
// 

// original code 
var saveInformation = function(query, update, options) { 
    asyncTasks.push(function(done) { 
     what.findOneAndUpdate(query, update, options, done) 
    }) 
} 

saveInformation(query, update, options) 

saveInformationがコールバックはエラーなしで呼び出された場合、ロガーが呼び出されると呼ばれるたびにこの方法で、あなたも同様にあなたが好きなら、エラーをログに記録することを変更することができます。

+0

私の場合、すべてのlogger.infoには異なる内容がありますので、すべてのロガーに対して異なる完了変数があると思います。そこにはたくさんのものがあるでしょう。他の解決策? – deeveeABC

+0

@deeveeABC findAndUpdate操作が発生した後にロギングステートメントを出力するには、そのコールバック内にある必要があります。したがって、ログに記録されるメッセージをコールバック関数に送信する方法について考える必要があります。 コールの前に、Xを保存する操作が開始されていることを示すロギングステートメントと、操作Yが正常に完了したこと、またはエラーが発生したというコールバック内の別のステートメントを実行することもできます。たとえば、メッセージを区別できるように、保存されているモデルのデータを含めることができます。 –

関連する問題