我有一个用户表
id | firstName | lastName
---------------------------
2 | Dave | Smith
3 | Peter | Smith
4 | Steve | Smith
和设置表
id | key | value | user_id
--------------------------------
1 | 'style' | 1 | 2
我想在设置表中为每个新行创建一个新行,它应该具有key = 'styleId'
,value = 1
和user_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中做到这一点
答案 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)
})