我已经为我们的公司做了一个自定义的应用程序,我已经将条形码存储在数据库中。
然后,每次没有条形码的产品从数据库中获取条形码,并将其分配给产品。
问题是,对于单个产品,我没有问题,而是多个产品。
如果我在shopify上制作了一个带有变体的产品,我会同时获得所有的变体,并且所有变体的条形码都是相同的。
我在mongodb对象中创建了两个值,Barcode : 32112312,默认使用:'false‘。当使用条形码时,我将该值赋值为true。
问题是,当我在同一时间获得5个值时,used字段的更新速度不会那么快,因此它会为所有变量提供相同的条形码。
我尝试过睡眠或超时,但也是这样做的。
这是我的代码,
async.forEach(product.variants,(variant,callback) =>{
if(variant.barcode == ''){
// console.log(variant.id);
brd.find({used:"false"})
.sort({_id: 1})
.limit(1)
.then(barcode =>{
shopify.productVariant
.update(variant.id ,({ barcode : barcode[0].barcode }))
.then((productresult)=> {console.log('To '+productresult.sku +' έχει '+productresult.barcode);
}, (err)=> console.error(err));
brd.updateOne({_id:barcode[0].id},{used:"true"})
.then(barcodeupdate=>{
console.log('barcode added ');
})
callback();
});
}
});console.log是这样的
条形码添加到55095έχει1234546546547到55096έχει1234546546547到55098έχει1234546546547到55097έχει1234546546547
我想要这样的东西
至55095έχει1234546546547条形码添加到55096έχει1234546546548条形码添加到55098έχει1234546546549条形码添加到55097έχει1234546546550条形码添加
我想要这样的东西
发布于 2020-07-01 17:03:35
最后我找到了答案!
我创建了一个异步函数,返回一个条形码,然后将其分配给没有条形码的产品。
async function getbarcode(barcodenew){
return brd.findOneAndUpdate({used: barcodenew},{used:"true"}).then(barcodeone => {return barcodeone});
};
barcodeassigned = getbarcode("false");
barcodeassigned.then(function(result){
shopify.productVariant
.update(variant.id,({barcode: result.barcode}))
.then((productresult)=>console.log('To '+productresult.sku +' πήρε το barcode '+productresult.barcode),
(err)=> console.error(err));
})
``https://stackoverflow.com/questions/62657483
复制相似问题