【发布时间】:2016-07-30 12:49:07
【问题描述】:
我正在尝试使用异步与 MongoDb 进行交互。出于某种原因,我的 async.auto 调用是将 2 个对象的数组添加到 results 参数中,而此时应该只有一个。
async.auto({
pantMeasurement: function (callback) {
app.models.PantMeasurement.findOne({ temp_user_id: req.session.temp_user_id }, function (err, pantMeasurement) {
var pantData = {'waist', 'length'};
if (!pantMeasurement) {
return app.models.PantMeasurement.create(_.extend({ temp_user_id: req.session.temp_user_id }, pantData), callback);
}
_.extend(pantMeasurement, pantData);
pantMeasurement.save(callback);
});
},
user: ['pantMeasurement', function (callback, results) {
var name = 'firstName';
results.pantMeasurement.user_id = name;
results.pantMeasurement.save(callback); //ERROR HERE
}]}, function(err, results) {
...
}
在第二个任务user 中,results.pantMeasurement.save(callback); 行抛出save 不存在的错误。单步执行代码后,这是因为results 有一个包含两个pantMeasurement 对象的数组,而应该只有一个对象而没有数组。该数组由一个pantMeasurement 对象和一个空对象组成。
如果!pantMeasurement 为真并且在数据库中创建了一个新条目,则代码可以正常工作。但是无论何时调用pantMeasurement.save(callback),我都会看到这个错误,我不知道为什么。
【问题讨论】:
标签: javascript node.js mongodb asynchronous mongoose