首页 > 解决方案 > 如何在 Amplify Datastore 中创建动态查询

问题描述

如何在放大反应应用程序中创建动态查询

预期查询:

const posts = await DataStore.query(Post, c => c.or(
  c => c.rating("gt", 4).status("eq", PostStatus.PUBLISHED)
));

“评级”和“状态”可能会因用户而异。请帮我创建一个动态数据存储查询。

标签: reactjstypescriptaws-amplifydatastoreamplify

解决方案


假设您有一个对象,它定义了哪些用户可以使用哪些过滤器查询。这里我假设用户可以是 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
    }
));

您必须想办法如何传递运算符和值。


推荐阅读