【问题标题】:How can I create a dynamic query in Amplify Datastore如何在 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,它可能是活动和状态。

标签: reactjs typescript aws-amplify datastore amplify


【解决方案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 查询。请指教
猜你喜欢
  • 1970-01-01
  • 2012-02-09
  • 2018-10-27
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 2017-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多