一对一外键的数据库查询,返回单个值(不是数组)



如何在数据库中查询与外键的一对一关系?

我的桌子:

  1. 游戏(id,created_at,played_at(
  2. 结果(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字段将为undefinednull,而error字段将被定义(。

最新更新