【发布时间】:2020-03-30 00:24:34
【问题描述】:
每次添加新数据或更新现有数据时,new_data 和 updated_data 变量都会增加。但是当我尝试 console log 代码底部的总计数(new_data 和 updated_data)时,结果为 0。我们如何在 Node 中使用 async 解决这个问题?
代码
let new_data = 0
let updated_data = 0
let vehicles = _.each(results.data, function (value, key) {
let condition = { VIN: value.VIN }
Vehicle.model.findOne(condition, function (err, doc) {
if (doc) {
let condition2 = { VIN: doc.VIN }
Vehicle.model.update(condition2, value, function (err, doc1) {
updated_data += 1
if (doc && typeof doc.log === 'function') {
const data = {
action: 'Update',
category: 'Inventory Import',
message: 'Import Successful',
status: '200'
}
return doc.log(data);
}
})
} else {
Vehicle.model.create(value, function (err, doc2) {
new_data += 1
if (doc2 && typeof doc2.log === 'function') {
const data = {
action: 'Create',
category: 'Inventory Import',
message: 'Import Successful',
status: '200'
}
return doc2.log(data);
}
})
}
})
})
console.log("new datad : ", new_data)
console.log("updated_data : ", updated_data)
【问题讨论】:
-
如果您想使用
async进行操作,您必须访问回调中的更新值或使用Promises。如果您不想更改任何代码,则必须使函数非异步。 -
我要做的就是获取 new_data 和 updated_data 的总数
-
是的,它总是返回 0,因为 Javascript 中的异步显示最快的语法。此外,您可以将 console.log 放在回调函数中。
标签: javascript node.js asynchronous