Средство разрешения запросов AppSync: необходимы ли expressionNames и expressionValues?

База R:

colSums(rowsum(df[, -1], df[, 1]) > 0)

#x y z k 
#4 4 2 3 
0
задан hgale 19 January 2019 в 17:14
поделиться

1 ответ

Позвольте мне сначала ответить на ваш второй вопрос:

expressionNames

expressionNames используются для интерполяции. Это означает, что после интерполяции этот объект выражения фильтра:

"expression": "#partitionKey = :value",
"expressionNames": {
    "#partitionKey": "id"
}

будет преобразован в:

"expression": "id = :value",

#partitionKey действует как заполнитель для имени вашего столбца id , '#' оказывается разделителем.

Но почему?

expressionNames необходимы, потому что некоторые ключевые слова зарезервированы DynamoDB , что означает, что вы не можете использовать эти слова внутри выражения DynamoDB.

expressionValues ​​

Когда вам нужно сравнить что-либо в выражении DynamoDB, вам также потребуется использовать замену фактического значения с использованием заполнителя, поскольку типизированное значение DynamoDB является сложным объектом. [тысяча сто двадцать семь]

В следующем примере:

"expression": "myKey = :partitionKey",
"expressionValues": {
    ":partitionKey": {
        "S": "123"
    }
}

:partitionKey является заполнителем для комплексного значения

{
    "S": "123"
}

':' - это другой разделитель, который сообщает DynamoDB использовать [ 1111] карта при замене.

Почему expressionNames и expressionValues всегда используются при генерации кода?

Просто для логики генерации кода всегда проще использовать expressionNames и expressionValues, потому что нет необходимости иметь два кодовых пути для зарезервированных / незарезервированных слов DynamoDB. Использование expressionNames всегда предотвращает столкновения!

0
ответ дан Tinou 19 January 2019 в 17:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: