knex插入多行
knex insert multiple rows
我在使用 knex 向 postgres 数据库中插入多行时遇到问题。
我有需要插入的动态行数。我期望的结果是:
插入行四次(四次是一个例子。我不知道确切的插入次数,因为它来自前端动态):
- field_id 每一行都不同:(1,2,3,4) - 我有这些 ID 的数组
- id_of_product 永远一样
- value 将始终不同:(req.body[id] 来自前端)- 括号中的 ID 与 [ 的值相同=49=] 来自
数组
我怎样才能做到这一点?我尝试用 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
table:
{ 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 */});
我在使用 knex 向 postgres 数据库中插入多行时遇到问题。 我有需要插入的动态行数。我期望的结果是:
插入行四次(四次是一个例子。我不知道确切的插入次数,因为它来自前端动态):
- field_id 每一行都不同:(1,2,3,4) - 我有这些 ID 的数组
- id_of_product 永远一样
- value 将始终不同:(req.body[id] 来自前端)- 括号中的 ID 与 [ 的值相同=49=] 来自 数组
我怎样才能做到这一点?我尝试用 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
table:
{ 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 */});