2016-09-26 29 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已成功完成或發生錯誤。它可以包含所保存模型的數據,以便您可以區分消息。 –