上下文:
我试图查询移动应用程序中的用户发送或接收的所有通知,并得到的结果(我认为)显示AWS AppSync的or筛选稍有中断(或者我不明白它是如何工作的)
请注意,我正在使用AWS AppSync查询执行这些查询,但是在使用它们的GUI或从发送查询时,结果是一致的。
下面是使用OR语句的列表查询
query listAllNotifsForUser {
listNotifications(filter: {sentUserID: {eq: "arbitrary-id-1"}, or: {receivedUserID: {eq: "arbitrary-id-1"}}}) {
items {
id
}
nextToken
}
}
此查询返回
"data": {
"listNotifications": {
"items": [],
"nextToken": null
}
下面是我的查询,它具体列出了具有等于任意id-1的sentUserID的通知(没有OR语句,只有上面OR过滤器的前半部分)。
query listAllNotifsForUser {
listNotifications(filter: {sentUserID: {eq: "arbitrary-id-1"}}) {
items {
id
}
nextToken
}
}
下面是这个查询的结果
{
"data": {
"listNotifications": {
"items": [
{
"id": "88d204c8-7346-4f69-bc6a-c1e5db1ce5f4"
},
{
"id": "29e03351-75f0-46b2-933b-c3cca43a6067"
},
{
"id": "e21cf81a-7cb3-4331-90af-6ef266f75820"
},
{
"id": "17b42150-ae7c-4852-a58c-85d73ed2e247"
}
],
"nextToken": null
}
}
}
请注意,这两个查询之间的唯一区别是删除了布尔检查的‘或’和后半部分,根据编程的基本知识,人们不会认为这会限制结果与单个布尔语句相比。
有什么想法吗?
发布于 2022-07-12 14:12:51
我是在我的AppSync控制台上这样做的,它起了作用:
query MyQuery {
listJobListings(filter: {or: [{ city: {eq: "Chongqing City"} }, { city: {eq: "Beijing"} }]}) {
nextToken
items {
city
}
}
}
这意味着你需要这样做:
query listAllNotifsForUser {
listNotifications(filter: {or: [{ sentUserID: {eq: "user-id"} }, { sentUserID: {eq: "user-id"} }]}) {
items {
id
}
nextToken
}
}
更多信息这里
https://stackoverflow.com/questions/72949492
复制相似问题