我尝试使用flutter从Supabase打印出多个数据,但就是不起作用
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());
}
});
}这是我每次运行此函数时收到的错误
I/flutter ( 2326): JSON object requested, multiple (or no) rows returned
I/flutter ( 2326): null我有多行具有相同的uid,请告诉我如何获取它
编辑:找到了我必须删除.single()的答案
发布于 2021-09-28 21:29:49
只是来澄清一下。
如果你使用single()过滤器,你的结果必须返回1并且只返回1个结果,否则它将失败。如果你想要多个返回值,你可以像这样去掉single():
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());
}
});
}发布于 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
发布于 2021-10-14 14:36:02
我不是flutter用户,但使用.single()的工作方式应该与在Javascript客户端中相同。
.limit(1) <=以数组[{id:123,firstname:'Harry',lastname:'Styles'}]的形式返回单个记录
.single() <=将单个记录作为对象{id:123,firstname:'Harry',lastname:'Styles'}返回
https://stackoverflow.com/questions/68572506
复制相似问题