我一直在尝试使用查询来构造访存调用,以返回数据库中两个表之间的联接数据。我有一个用于项目的表,另一个用于调色板,其中包含外键“ project_id”。
以下是到目前为止我尝试过的许多无效的迭代之一(到目前为止可能已经很混乱了)。我尝试了一段时间,然后完全放弃了,因为同名字段相互覆盖。
我也无法弄清楚如何将调色板数据嵌套在项目数据中,这也可以解决名称覆盖的问题。最后,我到了这一点,只是完全忘记了连接,而是试图手动构建输出,但是我没有得到数据,甚至没有任何错误消息。
.select()
.then(projects => {
return projects.map(async project => {
return database('palettes')
.where({ project_id: project.id })
.then(palettes => ({ ...project, palettes }))
})
}).then(projects => res.status(200).json(projects))
.catch(error => res.status(500).json({ error }))```
答案 0 :(得分:0)
您未提供数据库类型和架构结构。
假设:projects (project_id, name)
,palettes (palette_id, name, project_id)
并且您想查找与其1:1
有palette
关系的所有项目,这就足够了:
knex
.select(
'projects.project_id',
'projects.name as project_name',
'palettes.palette_id',
'palettes.name as palette_name'
)
.from('projects')
.innerJoin('palettes', 'projects.project_id', 'palettes.project_id')