Knex.js PostgreSQL 列引用 "id" 不明确
Knex.js PostgreSQL column reference "id" is ambiguous
我正在尝试使用 knex.js 从我的数据库中的集合中 select 单个项目,但收到错误 column reference "id" is ambiguous
,我认为它来自 id 属性 在 select table 和加入 table.
试图完成填充引用库存项的单个菜单项。
我有一个 menu_items
table,其中包含对 priceId
、itemId
和 menuId
.
的引用
itemId
引用库存项目,其中包含菜单项所需的相关信息。
现在我有这个问题。
async function getMenuItem({ menuItemId }) {
let menuItem = await db('menu_items')
.where({ id: menuItemId })
.first()
return menuItem ? menuItem : null
}
产生这个对象
{
id: '06e0472c-f805-4dc7-bdd4-867e823e44f6',
menuId: '99cca00e-cb43-4423-ab6c-2ed01a329e15',
itemId: '94ff9e9b-9fec-4026-b735-b326f3f3b88f',
priceId: 'be5a9e89-f04c-4320-8049-2087179732c2',
created_at: 2019-10-12T21:09:55.394Z,
updated_at: 2019-10-12T21:09:55.394Z
}
我试过这个查询
async function getMenuItem({ menuItemId }) {
let menuItem = await db('menu_items')
.where({ id: menuItemId })
.leftJoin('items', 'menu_items.itemId', 'items.id')
.first()
return menuItem ? menuItem : null
}
尝试以下代码片段会产生相同的错误
const menuItem = await db
.select(
'id as m_id',
'menuId',
'priceId',
'itemId',
)
.from('menu_items')
.where({ id: menuItemId })
.leftJoin('items', 'menu_items.itemId', 'items.id')
我希望输出显示这个单一的菜单项,我真的可以在这里使用一些指导或关于如何让它正常工作的建议。
您没有在 where 子句中指定哪个 ID。
尝试将其写为:
async function getMenuItem({ menuItemId }) {
let menuItem = await db('menu_items')
.where({ 'menu_items.id': menuItemId })
.leftJoin('items', 'menu_items.itemId', 'items.id')
.first()
return menuItem ? menuItem : null
}
因为 menu_items 和 items 都有一个名为 id 的列,您应该指定您指的是哪个 id。
我正在尝试使用 knex.js 从我的数据库中的集合中 select 单个项目,但收到错误 column reference "id" is ambiguous
,我认为它来自 id 属性 在 select table 和加入 table.
试图完成填充引用库存项的单个菜单项。
我有一个 menu_items
table,其中包含对 priceId
、itemId
和 menuId
.
itemId
引用库存项目,其中包含菜单项所需的相关信息。
现在我有这个问题。
async function getMenuItem({ menuItemId }) {
let menuItem = await db('menu_items')
.where({ id: menuItemId })
.first()
return menuItem ? menuItem : null
}
产生这个对象
{
id: '06e0472c-f805-4dc7-bdd4-867e823e44f6',
menuId: '99cca00e-cb43-4423-ab6c-2ed01a329e15',
itemId: '94ff9e9b-9fec-4026-b735-b326f3f3b88f',
priceId: 'be5a9e89-f04c-4320-8049-2087179732c2',
created_at: 2019-10-12T21:09:55.394Z,
updated_at: 2019-10-12T21:09:55.394Z
}
我试过这个查询
async function getMenuItem({ menuItemId }) {
let menuItem = await db('menu_items')
.where({ id: menuItemId })
.leftJoin('items', 'menu_items.itemId', 'items.id')
.first()
return menuItem ? menuItem : null
}
尝试以下代码片段会产生相同的错误
const menuItem = await db
.select(
'id as m_id',
'menuId',
'priceId',
'itemId',
)
.from('menu_items')
.where({ id: menuItemId })
.leftJoin('items', 'menu_items.itemId', 'items.id')
我希望输出显示这个单一的菜单项,我真的可以在这里使用一些指导或关于如何让它正常工作的建议。
您没有在 where 子句中指定哪个 ID。 尝试将其写为:
async function getMenuItem({ menuItemId }) {
let menuItem = await db('menu_items')
.where({ 'menu_items.id': menuItemId })
.leftJoin('items', 'menu_items.itemId', 'items.id')
.first()
return menuItem ? menuItem : null
}
因为 menu_items 和 items 都有一个名为 id 的列,您应该指定您指的是哪个 id。