Node.js 承诺的DynamoDB不';t在Promise.map中保存循环的所有项目

Node.js 承诺的DynamoDB不';t在Promise.map中保存循环的所有项目,node.js,amazon-web-services,promise,amazon-dynamodb,aws-sdk,Node.js,Amazon Web Services,Promise,Amazon Dynamodb,Aws Sdk,在DynamoDB中保存多个项目时出现问题。我的代码的结构如下: var Promise = require("bluebird"); var AWS = require('aws-sdk'); //config promise environment for AWS SDK AWS.config.setPromisesDependency(require("bluebird")); AWS.config.update({ accessKeyId: "*", secretAcc

在DynamoDB中保存多个项目时出现问题。我的代码的结构如下:

var Promise = require("bluebird");
var AWS = require('aws-sdk');

//config promise environment for AWS SDK
AWS.config.setPromisesDependency(require("bluebird"));
AWS.config.update({
    accessKeyId: "*",
    secretAccessKey: "*",
    region: 'eu-west-1'
});

var dynamodb = new AWS.DynamoDB.DocumentClient();

var arrayReading = []; //array of element we are going to save
for (var i = 0; i < 10; i++) { //filling the array
    var reading = {
        "device": null,
        "timestamp": new Date().toISOString(),
        "installation": "1",
        "values": []
    };
    console.log("creation: DEV" + i);
    reading.device = "DEV" + i;
    arrayReading.push(reading);
}
console.log(arrayReading.length);
Promise.map(arrayReading, function (reading) {
    console.log("saving device", reading.device);
    var params = {
        "TableName": "readings-test",
        "Item": reading
    };

    return dynamodb.put(params).promise() //saving
        .catch(function (err, data) {
            console.log("Error:",err);
        });
}).then(function () {
    console.log("done")
});
creation: DEV0
[...]
creation: DEV9
10
saving device DEV0
[...]
saving device DEV9
done
所以我假设所有元素都已保存。相反,当我检查DynamoDB表时,我看到只保存了元素的随机子集(3到6)


我做错了什么?我尝试提高表的写/读容量,但没有解决问题。

问题在于主/排序键配置

我的主键是安装,排序键是时间戳。这导致快速异步写入集群具有相同的时间戳,覆盖了以前的条目