0

DynamoDBに複数のアイテムを保存できませんでした。私のコードは次のように構成されている:私は取得Promise.map内のすべてのアイテムを保存しませんでした。

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)のランダムなサブセットだけが保存されていることがわかります。

私は間違っていますか?私はテーブルの書き込み/読み込み容量を上げようとしましたが、それは問題を解決しませんでした。

答えて

0

問題はプライマリ/ソートキー設定にあります。

私の主キーはインストールで、ソートキーはタイムスタンプです。これにより、迅速な非同期書き込みのクラスタには、同じタイムスタンプがあり、前のエントリを上書きしました。

関連する問題