首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >supabase获取多个数据(请求JSON对象,返回多(或无)行)

supabase获取多个数据(请求JSON对象,返回多(或无)行)
EN

Stack Overflow用户
提问于 2021-07-29 16:22:07
回答 3查看 293关注 0票数 0

我尝试使用flutter从Supabase打印出多个数据,但就是不起作用

代码语言:javascript
复制
getResponse(String uid) async {
    await client
        .from("privChatRoom")
        .select()
        .eq('userID', uid)
        .single()
        .execute()
        .then((value) {
      if (value.error == null) {
        print('value.data: ${value.data}');
      } else {
        print(value.error.message.toString());
        print(value.error.hint.toString());
      }
    });
  }

这是我每次运行此函数时收到的错误

代码语言:javascript
复制
I/flutter ( 2326): JSON object requested, multiple (or no) rows returned
I/flutter ( 2326): null

我有多行具有相同的uid,请告诉我如何获取它

编辑:找到了我必须删除.single()的答案

EN

回答 3

Stack Overflow用户

发布于 2021-09-28 21:29:49

只是来澄清一下。

如果你使用single()过滤器,你的结果必须返回1并且只返回1个结果,否则它将失败。如果你想要多个返回值,你可以像这样去掉single()

代码语言:javascript
复制
getResponse(String uid) async {
    await client
        .from("privChatRoom")
        .select()
        .eq('userID', uid)
        .execute()
        .then((value) {
      if (value.error == null) {
        print('value.data: ${value.data}');
      } else {
        print(value.error.message.toString());
        print(value.error.hint.toString());
      }
    });
  }
票数 1
EN

Stack Overflow用户

发布于 2021-09-28 10:53:15

如果您希望结果不会有单个响应,则调用不带.single()的查询。那么你应该得到一个空的结果。

或者uid值不存在于您的数据库中!

尝试用.limit(1)替换.single()

别忘了这个函数返回一个数组!所以你必须像这样获取数据,如果不存在数据,那么value.data将是一个空数组[]

但是,如果您希望获得0行,则可能需要使用.maybeSingle()

请阅读:https://postgrest.org/en/stable/api.html#singular-or-plural

票数 0
EN

Stack Overflow用户

发布于 2021-10-14 14:36:02

我不是flutter用户,但使用.single()的工作方式应该与在Javascript客户端中相同。

.limit(1) <=以数组[{id:123,firstname:'Harry',lastname:'Styles'}]的形式返回单个记录

.single() <=将单个记录作为对象{id:123,firstname:'Harry',lastname:'Styles'}返回

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68572506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档