【发布时间】:2019-06-22 18:25:50
【问题描述】:
是否可以在 AWS appsync / amplify 中组合过滤运算符,例如:
const filterInput = {
or:[
{
and: [
{createdById: { eq: userID }},
{chatWithId: { eq: chatWithUser.id }}
]
},
{
and: [
{createdById: { eq: chatWithUser.id }},
{chatWithId: { eq: userID }}
]
}
]
}
因为对我来说这不是过滤/按预期工作。
【问题讨论】:
-
您能否提供更多信息?什么没有按预期工作?您没有看到您希望看到的记录吗?我怀疑这可能是由于 DynamoDB 过滤器语义。你读过这个docs.aws.amazon.com/amazondynamodb/latest/developerguide/…吗?
-
我试图实现的是组合运算符过滤器。所以我想过滤第一个 AND - OR - 在第二个 AND 如果那些不存在而不是返回记录。我不知道是否有可能实现这样的目标以及它如何与 amplify 一起工作,或者我必须找到另一个解决方案。
-
这将组合过滤器运算符,但是如果满足过滤器表达式的数据分散在您的 DynamoDB 索引中,那么由于 DynamoDB 的语义,
Query.listX可能不会完全按照您的预期返回数据过滤表达式。从提供的详细信息中很难判断,因为我不知道您运行了什么查询以及您得到的结果不是您所期望的。看起来好像您正在尝试建模多对多关系。例如。我想要我参与的所有对话。如果是这种情况,我可以提供建议。 -
这只是 dynamoDB 中的一个简单表。 Graphql(放大)模式:键入 Chat { id: ID! createdAt:字符串 createdById:字符串 chatWithId:字符串消息:[消息] }
标签: amazon-web-services graphql aws-appsync aws-amplify amplifyjs