我使用sails.js更新difference
变量的库存数据。当我执行console.log(product.stock)
时,值为4.但似乎product.save()
函数未执行,因为属性stock
仍未更改为4.我猜问题是有希望的。有谁知道如何解决这个问题?
exports.updateProductStock = function (details) {
details.forEach(function( detail ) {
var findPrevDetailRule = {
invoice: detail.invoice,
product: detail.product.id
};
var createPrevDetailRule = {
invoice: detail.invoice,
product: detail.product.id,
quantity: detail.quantity
};
var requirementBeforeUpdateStock = [
PreviousDetail.findOne(findPrevDetailRule).sort('createdAt desc').then(),
PreviousDetail.create(createPrevDetailRule).then()
];
Q.all(requirementBeforeUpdateStock)
.spread(function( prevDetail, newPrevDetail ) {
var difference = detail.quantity - prevDetail.quantity;
return {
prevDetail: prevDetail,
difference: difference
};
})
.then(function( results ) {
Product.findOne(results.prevDetail.product).then(function(product) {
product.stock += results.difference;
// maybe this below is not execute
product.save();
console.log(product.stock);
});
})
});
注意:我使用风帆0.10-rc8。已经测试过sails-mysql,sails-mongo,sails-postgres,但仍然相同。
答案 0 :(得分:0)
.save()
接受回调,您可以使用该回调报告成功/失败。
例如,您可以重新发布回客户端(来自sails文档):
product.save(function (err) {
if (err) return res.send(err, 500);
res.json(product);
});
根据范围,您可能需要将res
传递到您的功能
或者,监视控制台中的成功/失败,例如
product.save(function (err) {
if (err) console.log('save error: ' + err);//assuming err to be a string
console.log('save success');
});
至少应该给你一个关于出了什么问题的线索。