2017-05-09 9 views
2

他の変更を保存するときにオブジェクトを作成/更新する最も簡単な方法は何ですか?私たちがモデルクライアントを持っているとし、保存時にイベントを発行するとします。我々はClientProjectionを更新するために、今したいと仮定しましょうNode.js saveイベントのdbオブジェクトを別のオブジェクトに更新する

process.on('clientUpdate', function(client) { 
    //LOGIC GOES HERE 
}); 

clientSchema.post('save', function (client) { 
    process.emit('clientUpdate', client); 
}); 

その後、我々は次のようにそのイベントのために購読することができます。リスナーの場所とmongoDB(mongoose)の更新ロジックの実装方法 - モデル、DAOなどを使用していますか?

答えて

0

私はあなたが別のイベントを避けて、ポストセーブフック内でアップデートを行うことができると信じています。たとえば:あなたは非同期関数を呼び出したい場合は、ポストセーブフックで

clientSchema.post('save', function (client, next) { 
    ClientProjection.update({/* Query Parameters */}, 
          {/* Data to update */}, 
          function(err, clientProjection) { 
           next() 
          } 
}); 

、あなたはあなたの2番目の引数としてnextを追加し、非同期動作が完了したときに、コールバックにそれを呼び出す必要があります。 mongoose Middleware docs

+0

Asynchronous Post Hooksセクションを参照してください。ClientProjectionを更新する複数のポストセーブフックがあるので、更新ロジックを1か所に集約するとよいでしょう。だから私はイベントを好む理由です。私はこれにもいくつかの問題を発見しましたが、http://stackoverflow.com/questions/43888777/scope-of-events-from-process-emit-in-node-js。多分あなたはこれで私を助けることができますか? – kadiii