DAX put Item завершается неудачно с сообщением "Не удается преобразовать неопределенное или нулевое значение в объект" - PullRequest
0 голосов
/ 05 апреля 2019

Я пытался настроить DAX для существующей лямбда-функции, которая считывает и записывает данные в DynamoDB.До введения DAX все работало нормально, после этого записи перестали работать, без изменений в том, какие данные записывались.

При отладке я обнаружил, что они терпят неудачу с этим исключением:

Write operation failed without negative acknowledgement 
Cannot convert undefined or null to object
at Function.keys (<anonymous>)
at Function._encodeAttributeValueInternal (/var/task/node_modules/amazon-dax-client/src/AttributeValueEncoder.js:173:23)
at Function.encodeAttributes (/var/task/node_modules/amazon-dax-client/src/AttributeValueEncoder.js:144:29)
at Function.encodeValuesWithNames (/var/task/node_modules/amazon-dax-client/src/Encoders.js:227:55)
at Encoders.encodeValues (/var/task/node_modules/amazon-dax-client/src/Encoders.js:67:23)
at Promise.resolve.then (/var/task/node_modules/amazon-dax-client/generated-src/Stubs.js:163:24)
at propagateAslWrapper (/var/task/node_modules/async-listener/index.js:504:23)
at /var/task/node_modules/async-listener/glue.js:188:31
at /var/task/node_modules/async-listener/index.js:541:70
at /var/task/node_modules/async-listener/glue.js:188:31

1 Ответ

0 голосов
/ 05 апреля 2019

Записываемые данные имели некоторые поля, которые были «необязательными». Элемент, который был написан был как:

{
    requiredField1: "Some value",
    requiredField2: true,
    optionalField1: "abc",
    optionalField2: null,
    optionalField3: undefined,
}

С DynamoDB все было в порядке, без претензий, но, очевидно, DAX не прощает с undefined. Изменение этого значения на null позволило мне справиться с ошибкой.

...