невозможно получить все элементы, используя запрос DynamoDB - PullRequest
0 голосов
/ 12 марта 2020

Как сканировать все элементы из AWS Dynamodb, используя node.js. Я публикую здесь свой код.

//Load the AWS SDK for Node.js
var AWS = require('aws-sdk');
var unmarshalItem = require('dynamodb-marshaler').unmarshalItem;

// Set the region
AWS.config.update({region: 'us-east-1'});

// Create DynamoDB service object
var b = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler =  (event, context, callback) => {

var params = {
    TableName: 'IoTdata2',
    FilterExpression: "#deviceid = :unitID and #devicetimestamp BETWEEN :ftimestamp and :ttimestamp",
    ExpressionAttributeNames: {
    "#deviceid": "id",
    "#devicetimestamp": "timestamp"
  },
  ExpressionAttributeValues: {
    ':unitID': {S: 'arena-MXHGMYzBBP5F6jztnLUdCL' },
    ':ftimestamp' : {S: '1584022680000' },
    ':ttimestamp' : {S: '1584023280000' }
   },
};

b.scan(params, onScan);

function onScan(err, data) {
    if (err) {
        console.error("Unable to scan the table. Error JSON:", JSON.stringify(err, null, 2));
    } else {        
        console.log("Scan succeeded.");
        var items = data.Items.map(function(val){ 
            return  unmarshalItem(val); 
        }) 

        // continue scanning if we have more items
        if (typeof data.LastEvaluatedKey != "undefined") {
            console.log("Scanning for more...");
            params.ExclusiveStartKey = data.LastEvaluatedKey;
            b.scan(params, onScan);
        }
    }
    callback(null, items);
}
};

Я перешел по ссылке https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GettingStarted.NodeJs.04.html

Через некоторое время я получаю время здесь. Я также проверил эту ссылку Как получить / отсканировать все элементы из `AWS Dynamodb`, используя node.js Я не могу правильно вернуть данные, я думаю, Есть предложения? Спасибо

1 Ответ

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

Это сработало для меня, выполнив следующее решение Хэнка: Как получить / отсканировать все элементы из `AWS dynamicodb`, используя node.js

exports.handler = async (event, context, callback) => {
    let params = {
   ExpressionAttributeNames: {
    "#deviceid": "id",
    "#devicetimestamp": "timestamp"
  },
  ExpressionAttributeValues: {
    ':unitID': {S: event.deviceid },
    ':ftimestamp' : {S: event.fromtime },
    ':ttimestamp' : {S: event.totime }
   },
 KeyConditionExpression: '#deviceid = :unitID and #devicetimestamp BETWEEN :ftimestamp and :ttimestamp',
 TableName: 'IoTdata2'
};

    let scanResults = [];
    let items;
    do {
        items = await b.query(params).promise();
        items.Items.map((item) => scanResults.push(unmarshalItem(item)));
        params.ExclusiveStartKey = items.LastEvaluatedKey;
    } while (typeof items.LastEvaluatedKey != "undefined");
    var len = scanResults.length;
    console.log(len);
    callback(null, scanResults);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...