连接方法同时运行 - 节点js

时间:2016-09-26 09:14:05

标签: javascript node.js logging winston

我是节点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时,我会创建一个日志太?

1 个答案:

答案 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,如果调用回调没有错误,将调用记录器,如果你愿意,也可以修改它以记录错误。