我有一个问题 - 不确定我是否做错了什么或者这是一个错误。我有一些产品 - 每一种都有一系列的变体。我想浏览一些数据并以这些变体加载它,但我遇到了许多“版本错误:找不到匹配的文档”错误。
认为我遇到了竞争条件(我为我修改的每个变体依次保存相同的文档),我使用了 asyc.eachSeries() 但这没有帮助。一次加载导致错误的文档不会产生错误,因此它似乎与某些竞争条件有关,但我无法追踪它。
Schema:
var Product = new Schema({
title: {
type: String,
},
variations: {
type: Array
}
});
示例代码:
// Some data to load - the 'variant' is the index of the variations array above
var records = [{
code: 'foo',
id: '50ba9c647abe1789f7000073',
variant: 0
}, {
code: 'bar',
id: '50ba9c647abe1789f7000073',
variant: 1
}, {
code: 'foobar',
id: '50ba9c647abe1789f7000073',
variant: 2
}];
var iterator = function(item, cb) {
Product.findById(item.id).exec(function(err, product) {
if(err) {
return cb(err);
}
if (product) {
product.variations[item.variant].code = item.code.trim();
product.markModified('variations');
product.save(function(err, p) {
return cb(err);
});
} else {
return cb('Missing product');
}
});
};
async.eachSeries(records, iterator, function(err) {
process.exit(1);
});