какой шаблон API я могу получить правильный объект JSON для хранения в Dynamodb

Используя встроенную функцию списка, вы можете сделать это

a
out:[[1, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
#Displaying the list

a.remove(a[0])
out:[[1, 1, 1, 1], [1, 1, 1, 1]]
# Removed the first element of the list in which you want altered number

a.append([5,1,1,1])
out:[[1, 1, 1, 1], [1, 1, 1, 1], [5, 1, 1, 1]]
# append the element in the list but the appended element as you can see is appended in last but you want that in starting

a.reverse()
out:[[5, 1, 1, 1], [1, 1, 1, 1], [1, 1, 1, 1]]
#So at last reverse the whole list to get the desired list
2
задан Kalev 24 March 2019 в 06:32
поделиться

2 ответа

Вам не нужно указывать типы, если вы используете API DocumentClient вместо API DynamoDB.

DocumentClient - это API, который абстрагирует типы при манипулировании элементами в DynamoDB, что упрощает чтение и запись элементов из него.

Предполагая, что в какой-то момент вы вызываете DynamoDB.putItem(params), вам нужно заменить его API-интерфейсом DocumentClient и использовать вместо него метод put.

Ваш код будет таким простым:

const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();

exports.handler = async (event) => {
    await docClient.put({
        Item: {
            date: Date.now(),
            message: JSON.parse(event.body),
            ID: 'some-random-id-you-choose',
            a: { "id": "123456", "data": [{ "mac": "1231" }] }
        },
        TableName: 'wifi'
    }).promise()
}

. Посмотрите, что я использую async / await , поэтому вам не нужно использовать ни обратный вызов Lambda, ни обратный вызов DynamoDB больше.

Все операции API для DocumentClient доступны в официальных документах

.
0
ответ дан Thales Minussi 24 March 2019 в 06:32
поделиться

Несмотря на то, что DynamoDB является хранилищем документов без схемы, требуется, чтобы вы объявили тип данных, которые хранятся в полях элемента.

Ваш код должен выглядеть следующим образом:

const aws = require('aws-sdk');
const ddb = new aws.DynamoDB();

const Item = {
    date: {N: Date.now()},
    message: {S: event.body},
    ID: {S: inputttt},
    a: {M: {
        "id":{S: "123456"},
        "data":{L: [ {M: {"mac":{S: "1231"}}} ]}
    }}

};

const TableName = 'wifi';

ddb.putItem({Item, TableName}, (err, data) => { ... })

В приведенном выше коде каждое свойство Item является объектом, отображающим тип в значение. Например, date - это числовой тип с {N: Date.now}; a - это объект или карта с {M: {"id" ... }}, а id - строка с {S: '123456'}.

Код выше делает некоторые предположения о типах. Вы должны убедиться, что выбранные мной типы соответствуют вашим данным. (Например, предполагается, что event.body и inputttt являются строками.)

0
ответ дан Kalev 24 March 2019 в 06:32
поделиться
Другие вопросы по тегам:

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