据我所知,您想查找即将出售的产品(由销售模型中的条目标记)是否存在于库存中。如果是这样,那么在库存中注册的产品相关信息将被修改,并且可以说可用产品的数量减少一个。以下是我提出的解决方案,但尚未真正彻底测试。
示例代码:
module.exports = function(Sales) {
Sales.beforeRemote('create', function(ctx, data, next) {
let Stock = app.models.Stock;
let soldPieces = ctx.args.data.soldPieces;
let stockInstance = Stock.findOne({
where: {productName: ctx.args.data.productName},
})
let productData = Stock.update(
{"productName": ctx.args.data.productName},
{
"availablePieces": stockInstance.availablePieces - soldPieces,
}
);
next(); //Make sure to call it because such function are asynchronous
});
};
sales.json
{
"name": "Sales",
"plural": "Sales",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"productName": {
"type": "string",
"required": true
},
"productPrice": {
"type": "string"
},
"soldPieces": {
"type": "number"
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
stock.json
{
"name": "Sales",
"plural": "Sales",
"base": "PersistedModel",
"idInjection": true,
"options": {
"validateUpsert": true
},
"properties": {
"productName": {
"type": "string",
"required": true
},
"productPrice": {
"type": "string"
},
"soldPieces": {
"type": "number"
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": {}
}
进一步阅读:
https://loopback.io/doc/en/lb3/Creating-updating-and-deleting-data.html#updating-data-model-instances