使用Knex循环插入表中

时间:2019-07-03 22:57:26

标签: javascript sql postgresql knex.js

我有一个用户表

 id | firstName | lastName 
---------------------------
 2  | Dave      | Smith
 3  | Peter     | Smith
 4  | Steve     | Smith

和设置表

 id |  key    | value | user_id
--------------------------------
 1  | 'style' | 1     | 2

我想在设置表中为每个新行创建一个新行,它应该具有key = 'styleId'value = 1user_id =循环中id的当前值

 id  |  key    | value | user_id
---------------------------------
 101 | 'style' | 1     | 1
 102 | 'style' | 1     | 2
 103 | 'style' | 1     | 3

伪代码

const usersIds = knex.select('id').from('users')
for each (id in usersIds) {
    knex('settings').insert({
        value: 'style',
        key:1,
        user_id: id
    })
}

如何在knex中做到这一点

1 个答案:

答案 0 :(得分:1)

您无需在此处进行多个插入查询,您可以先创建数据数组,然后使用该数组进行插入查询。

示例:

knex.select('id').from('users').then(users => {
    const settings = []
    users.forEach(user => {
        settings.push({
            value: 'style',
            key: 1,
            user_id: user.id
        })
    })

    return knex('settings').insert(settings)
})
相关问题