我正在尝试使用环回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)


有没有办法做到这一点的环回?

目前,我面临两个问题。

我得到:


  ER_DUP_ENTRY:密钥的重复条目“ 22323”
  'all_inventory_SkuRegalFach_uindex'


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

而且我不知道如何告诉回送将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);
});


有办法用回送的ORM做到这一点吗?

最佳答案

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

如果得到结果,则该结果存在。您可以修改数量,然后将其存储。如果不存在,则只需创建它。

10-06 12:00