如何在 Amplify Datastore 中创建动态查询
Posted
技术标签:
【中文标题】如何在 Amplify Datastore 中创建动态查询【英文标题】:How can I create a dynamic query in Amplify Datastore 【发布时间】:2021-09-21 11:53:03 【问题描述】:如何在放大反应应用程序中创建动态查询
预期查询:
const posts = await DataStore.query(Post, c => c.or(
c => c.rating("gt", 4).status("eq", PostStatus.PUBLISHED)
));
“评分”和“状态”可能会因用户而异。请帮我创建一个动态数据存储查询。
【问题讨论】:
您能发布另一个动态生成查询的示例吗? @johannchopin - 我需要根据我的架构更改过滤器查询。例如:对于用户 A,它是评级和状态。对于用户 B,它可能是活动和状态。 【参考方案1】:假设您有一个对象,它定义了哪些用户可以使用哪些过滤器查询。这里我假设用户可以是 typeA 和 typeB 两种类型。
const queryTable =
typeA: ['status', 'rating'],
typeB: ['active', 'status']
const posts = await DataStore.query(Post, c => c.or(
c =>
const operator = "eq" || "gt";
const value = 4 || "published";
queryTable[user.type].forEach(func, =>
c.[func](operator, value)
)
return c
));
你必须想办法传递运算符和值。
【讨论】:
这一行const operator = "eq" || "gt";
将始终评估为eq
。与const value = 4 || "published"
相同,它将是4
是的,我知道,但这是一个例子,说明他可以使用 wither eq 或 gt 或任何他喜欢的操作员。价值也一样。
@Karthik:感谢您的询问,它的工作。另外,我们如何一起处理 AND 和 OR 查询。请指教以上是关于如何在 Amplify Datastore 中创建动态查询的主要内容,如果未能解决你的问题,请参考以下文章
AWS Amplify DataStore 与存在于数组中的过滤器
AWS Amplify AppSync 使用在 Cognito 中创建的 Google 用户登录
通过 GraphQL 键检索 AWS Amplify DataStore 记录
我可以在使用 AWS amplify for Cognito 和 DataStore 的同时使用 fire base 来托管我的 Flutter Web 应用程序吗