Преобразование ответа DynamoDB в JSON - PullRequest
0 голосов
/ 02 марта 2020

Ниже мой запрос к DynamoDB

var parse = AWS.DynamoDB.Converter.output;

b.query(params, function(err, results)  {
    if (err) {
        console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
        //callback(err);
    } else {
        console.log("Query succeeded.");
        console.log(JSON.stringify(results.Items));
        callback(null, results.Items);
        results.Items.forEach(function(element, index, array) {
        console.log( parse({"M": element.data.M }));
    });
    }
});

У меня есть ответ "results.Items" от моего DynamoDB, как этот

[{"id":{"S":"arena-MXHGMYzBBP5F6jztnLUdCL"},"data":{"M":{"phaseAngle":{"L":[{"N":"5.0753"},{"N":"5.0506"},{"N":"5.0267"},{"N":"5.0027"},{"N":"4.9793"},{"N":"4.9558"},{"N":"4.9319"},{"N":"4.9077"},{"N":"4.8835"},{"N":"4.8593"}]},"unitID":{"S":"arena-MXHGMYzBBP5F6jztnLUdCL"},"type":{"S":"DATA"},"version":{"S":"1.0.0"},"timestamp":{"N":"1582920097000"},"frequency":{"L":[{"N":"59.9596"},{"N":"59.9635"},{"N":"59.9619"},{"N":"59.9632"},{"N":"59.9616"},{"N":"59.9621"},{"N":"59.9619"},{"N":"59.9613"},{"N":"59.9613"},{"N":"59.9608"}]},"voltage":{"L":[{"N":"122.5669"},{"N":"122.5473"},{"N":"122.5593"},{"N":"122.5627"},{"N":"122.5382"},{"N":"122.5328"},{"N":"122.5758"},{"N":"122.5376"},{"N":"122.526"},{"N":"122.5364"}]}}},"timestamp":{"S":"1582920097000"}}]

Я хочу преобразовать это в обычный JSON что-то похожее на это https://jxr5e29we5.execute-api.us-east-1.amazonaws.com/prod/alldata

Я использовал AWS .DynamoDB.Converter.output; и parse ({"M": element.data.M}) дал идеальный json, но я не могу вернуть этот вывод. Любые предложения помощи? Спасибо

1 Ответ

0 голосов
/ 02 марта 2020

Решение: импортируйте это var unmarshalItem = require('dynamodb-marshaler').unmarshalItem; У меня есть ответ здесь в "results.Items", и теперь вы можете сделать это, чтобы получить нормальный формат json.

var items = results.Items.map(unmarshalItem);
        console.log(items);
        callback(null, items);

Но я вижу это npm пакет устарел, поэтому я попытаюсь сделать это с последней DynamoDB/Converter и обновлю здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...