gpt4 book ai didi

sql - knex插入多行

转载 作者:行者123 更新时间:2023-11-29 12:40:04 28 4
gpt4 key购买 nike

我在使用 knex 将许多行插入 postgres 数据库时遇到问题。我有需要插入的动态行数。我期望的结果是:

插入行四次(四次是一个例子。我不知道确切的插入次数,因为它来自前端动态):

  • field_id 每一行都不同:(1,2,3,4) - 我有这些 ID 的数组
  • id_of_product 将始终相同
  • value 将始终不同:(来自前端的 req.body[id])- 括号中的 ID 与来自 field_id 的值相同数组

我怎样才能做到这一点?我尝试用 forEach 循环它,但它是异步操作所以我不能使用 .then() 因为它将被调用四次

这是我尝试过的。我不知道如何设置 field_id 和 req.body 来动态获取它。

字段 = [1,2,3,4]

预期结果:

knex 创建 4 个插入,如下所示:field_id: 1,product_id:一些静态id值: frontValue[1]等

knex('metadata').insert(
[{ field_id: fields,
product_id: product_id,
value: req.body[fields]
}]
)

最佳答案

如果我没理解错的话,您想将 4 条记录插入到您的 metadata 表中:

{ field_id: 1, product_id: X, value: req.body[1] },
{ field_id: 2, product_id: X, value: req.body[2] },
{ field_id: 3, product_id: X, value: req.body[3] },
{ field_id: 4, product_id: X, value: req.body[4] }

要在同一语句中插入多个记录,它们每个都需要是您提供给 Knex 的数组中的独立元素(查看 insert 文档以获取更多示例):

const product_id = X;
const fieldsToInsert = fields.map(field =>
({ field_id: field, product_id, value: req.body[field] }));

return knex('metadata').insert(fieldsToInsert)
.then(() => { /* handle success */ })
.catch(() => { /* handle failure */});

关于sql - knex插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54809012/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com