如何在数据库中查询与外键的一对一关系?
我的桌子:
- 游戏(id,created_at,played_at(
- 结果(game_id,key(
数据:游戏
("id": 1, "created_at": "2022-03-02T11:01:11+00:00", "played_at": "2022-04-02T12:15:06+00:00")
数据:结果
("game_id": 1, "key": "alyktm3cf11bypgg")
我的数据库查询如下:
const { data, error } = await supabase
.from('games')
.select('*, registrations(walletKey), results(key)')
.order('scheduled_at')
;
结果包含一个注册数组,如下所示:
{
"id": 1,
"created_at": "2022-03-02T11:01:11+00:00",
"played_at": "2022-04-02T12:15:06+00:00",
"results": [
{
"key": "alyktm3cf11bypgg"
}
]
}
但是,由于总是只有一个结果,我可以修改我的查询以获得这个结果吗?
{
"id": 1,
"created_at": "2022-03-02T11:01:11+00:00",
"played_at": "2022-04-02T12:15:06+00:00",
"results":
{
"key": "alyktm3cf11bypgg"
}
}
甚至这个:
{
"id": 1,
"created_at": "2022-03-02T11:01:11+00:00",
"played_at": "2022-04-02T12:15:06+00:00",
"key": "alyktm3cf11bypgg"
}
这可以通过使用single()
方法来实现:
const { data, error } = await supabase
.from('games')
.select('*, registrations(walletKey), results(key)')
.order('scheduled_at')
.single();
请注意,如果查询没有返回一行,则该方法将返回一个错误(即data
字段将为undefined
或null
,而error
字段将被定义(。