Loopback upsert with addition

时间:2016-03-02 08:56:02

标签: mysql orm loopbackjs

我试图用upsert数据库表进行环回。原始查询是

insert into all_inventory (sku, qty, regal, fach, skuRegalFach)
values (?, 1, ?, ?, ?) 
on duplicate key update 
   qty = qty + 1, 
   regal = values(regal), 
   fach = values(fach)

有没有办法用loopback做到这一点?

目前我遇到两个问题。

我明白了:

  

ER_DUP_ENTRY:重复输入' 22323'为了钥匙   ' all_inventory_SkuRegalFach_uindex'

因为环回似乎无法正确处理密钥。

而且我不知道如何告诉loopback将1添加到qty字段而不是仅用新值覆盖它。

我现在正在使用原始查询,

let ds = Inventory.dataSource,
    values = [sku, regal, fach, sku + regal + fach],
    sql = `insert into all_inventory (sku, qty, regal, fach, skuRegalFach) values (?, 1, ?, ?, ?) on duplicate key update qty = qty + 1, regal = values(regal), fach = values(fach)`
ds.connector.query(sql, values, (err, products) => {
    if (err) return console.error(err);
    cb(null, products);
});

有没有办法用loopback的ORM做到这一点?

1 个答案:

答案 0 :(得分:1)

我会使用查找过滤器。 findById或使用适当的过滤器查找。

如果您得到结果,那么它就存在。您可以修改数量然后存储它。如果它不存在,那么你只需创建它。