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

vik*_*eve 6 javascript reactjs supabase supabase-database

如何在supabase中查询与外键的一对一关系?

我的桌子:

  1. 游戏(id、created_at、played_at)
  2. 结果(游戏 ID、密钥)

数据:游戏

("id": 1, "created_at": "2022-03-02T11:01:11+00:00", "played_at": "2022-04-02T12:15:06+00:00")
Run Code Online (Sandbox Code Playgroud)

数据:结果

("game_id": 1, "key": "alyktm3cf11bypgg")
Run Code Online (Sandbox Code Playgroud)

我的 SUPABASE 查询如下所示:

    const { data, error } = await supabase
        .from('games')
        .select('*, registrations(walletKey), results(key)')
        .order('scheduled_at')
    ;
Run Code Online (Sandbox Code Playgroud)

结果包含一系列注册,如下所示:

{
    "id": 1,
    "created_at": "2022-03-02T11:01:11+00:00",
    "played_at": "2022-04-02T12:15:06+00:00",
    "results": [
        {
            "key": "alyktm3cf11bypgg"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但由于总是只有一个结果,我可以修改我的查询来获得这个结果吗?

{
    "id": 1,
    "created_at": "2022-03-02T11:01:11+00:00",
    "played_at": "2022-04-02T12:15:06+00:00",
    "results": 
    {
        "key": "alyktm3cf11bypgg"
    }

}
Run Code Online (Sandbox Code Playgroud)

甚至是这个:

{
    "id": 1,
    "created_at": "2022-03-02T11:01:11+00:00",
    "played_at": "2022-04-02T12:15:06+00:00",
    "key": "alyktm3cf11bypgg"
}
Run Code Online (Sandbox Code Playgroud)

chi*_*lov 0

这可以通过使用以下方法来实现single()

const { data, error } = await supabase
    .from('games')
    .select('*, registrations(walletKey), results(key)')
    .order('scheduled_at')
    .single();
Run Code Online (Sandbox Code Playgroud)

请注意,如果查询不返回单行,则该方法将返回错误(即,在定义字段时,该data字段将是undefinedor )。nullerror