我是节点js的新手,并且在我的代码中有一个方法,它以下列方式保存信息:
var saveInformation = function(query, update, options) {
asyncTasks.push(function(done) {
what.findOneAndUpdate(query, update, options, done)
})
}
saveInformation(query, update, options)
我多次调用saveInformation
方法,并且每次调用此方法时都需要写入日志文件。这样做最简单的方法是什么?
我尝试过刚刚添加我的日志(我正在使用winston模块),就像这样:
saveInformation(query, update, options)
logger.info('Hello')
然而,这有时会保存,有时也不会(即它只会记录一次,但是这个方法在整个程序中运行了几次)。
所以我想知道,有没有办法在saveInformation行中添加另一个方法以确保它们同时运行,所以当saveInformation
保存到dbs时,我会创建一个日志太?
答案 0 :(得分: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
,如果调用回调没有错误,将调用记录器,如果你愿意,也可以修改它以记录错误。