Как отфильтровать объект AWSJSON в AWS AppSync?

Мой APPSync подключен к таблице Dynamodb, и схема выглядит так:

type Query {
    getNews(date: String!): News
    listNews(filter: TableNewsFilterInput, limit: Int, nextToken: String): NewsConnection
}
input TableNewsFilterInput {
    date: TableStringFilterInput
    news: TableStringFilterInput
}

input TableStringFilterInput {
    ne: String
    eq: String
    le: String
    lt: String
    ge: String
    gt: String
    contains: AWSJSON
    notContains: String
    between: [String]
    beginsWith: String
}

Столбец новостей в таблице Dynamodb представляет собой карту и выглядит примерно так:

{
abhijit banerjee:{
ampUrlString:   https://m.freepressjournal.in/article/business/rahul-gandhi-and-abhijit-banerjee-discuss-economic-crisis-amid-coronavirus-pandemic-here-are-the-highlights-of-their-conversation/5a5c3e42-9a55-4fce-8ac3-5b4a17125aca
}
}

Мне нужно отфильтровать по ключевому слову, скажем, Abhijit. Я нигде не мог найти решения. Любая помощь приветствуется!


person Bhargava Macha    schedule 05.05.2020    source источник


Ответы (1)


Вы можете использовать Query, чтобы получить данные, а затем применить фильтр. Что-то вроде этого:

    {
        "version" : "2017-02-28",
        "operation" : "Query",
        "query" : {
            "expression": "primaryKey = :primary", ## add a sort key filter if the table has it
            "expressionValues" : {
                ":primaryKey" : $util.dynamodb.toDynamoDBJson($ctx.args.primaryKey)
            }
        },
        "filter" : {
            "expression": "contains (:name, name)",
            "expressionValues" : {
                ":authors" : $util.dynamodb.toDynamoDBJson($ctx.args.name)
            }
        }
    }

Вы также можете создать индекс в колонке новостей. Добавьте только один ключ в индекс и спроецируйте в него все столбцы. Теперь вы можете использовать запрос с этим индексом, это поможет, если вы хотите, чтобы все новости относились к одной входной строке.

Также проверьте здесь: Запрос DynamoDB со списком в AWS AppSync

person Praneet Nadkar    schedule 15.05.2020