【发布时间】:2014-06-24 03:31:08
【问题描述】:
我使用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);
});
})
});
注意:我使用sails 0.10-rc8。用sails-mysql、sails-mongo、sails-postgres测试过,还是一样。
【问题讨论】:
标签: promise sails.js waterline