質問編集履歴

1

タイトルを修正、コードをわかりやすく修正

2016/03/29 12:47

投稿

akabei
akabei

スコア21

test CHANGED
@@ -1 +1 @@
1
- DynamoDBに複数の項目を追加する方法について
1
+ DynamoDBに複数の項目を追加するプログラムでcontext.done()をコールするタイミングがわかりません
test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  var key = event.Records[0].s3.object.key;
68
68
 
69
- console.log("Bucket:", bucket, "Key:", key);
69
+ console.log('Bucket:', bucket, ' Key:', key);
70
70
 
71
71
  s3.getObject({Bucket: bucket, Key: key}, function(err, data) {
72
72
 
@@ -74,68 +74,62 @@
74
74
 
75
75
  console.log(err);
76
76
 
77
- context.fail("S3 object get error!! " + err.code + ":" + err.message);
77
+ context.fail('S3 object get error!! ' + err.code + ":" + err.message);
78
78
 
79
79
  }
80
80
 
81
81
  else {
82
82
 
83
+ //テーブル名
84
+
83
- //console.log("Body:", String(data.Body));
85
+ var tablename = 'test';
86
+
87
+
84
88
 
85
89
  //読み込んだJSONをDynamoDBのパラメータ形式に変換
86
90
 
87
91
  var content = JSON.parse(String(data.Body));
88
92
 
89
- var items = [];
90
-
91
- for (var table in content) {
92
-
93
- tablename = table;
94
-
95
- console.log('Table: ', tablename, ' Count: ', content[table].length);
93
+ console.log('Table:', tablename, ' Count:', content[tablename].length);
96
-
94
+
97
- items = getItemList(content[table]);
95
+ var items = getItemList(content[tablename]);
96
+
97
+ for (var i = 0; i < items.length; i++) {
98
+
99
+ var params = {
100
+
101
+ TableName: tablename,
102
+
103
+ Item: items[i]
104
+
105
+ };
106
+
107
+ //DynamoDBへ書き込む
108
+
109
+ dynamo.putItem(params, function (err, data) {
110
+
111
+ if (err) {
112
+
113
+ console.log(err);
114
+
115
+ context.fail('DynamoDB put error!! ' + err.code + ':' + err.message);
116
+
117
+ }
118
+
119
+ else {
120
+
121
+ console.log('data uploaded successfully.');
122
+
123
+ //★1)doneを呼び出すタイミングは?
124
+
125
+ //context.done();
126
+
127
+ }
128
+
129
+ }); //★2)ワーニング: Don't make functions within a loop.
98
130
 
99
131
  }
100
132
 
101
- for (var i = 0; i < items.length; i++) {
102
-
103
- //console.log(items[i]);
104
-
105
- var params = {
106
-
107
- TableName: tablename,
108
-
109
- Item: items[i]
110
-
111
- };
112
-
113
- //DynamoDBへ書き込む
114
-
115
- dynamo.putItem(params, function (err, data) {
116
-
117
- if (err) {
118
-
119
- console.log(err);
120
-
121
- context.fail("DynamoDB put error!! " + err.code + ":" + err.message);
122
-
123
- }
124
-
125
- else {
126
-
127
- console.log("data uploaded successfully.", data);
128
-
129
- //★1)doneを呼び出すタイミングは?
130
-
131
- //context.done();
132
-
133
- }
134
-
135
- }); //★2)ワーニング: Don't make functions within a loop.
136
-
137
- }
138
-
139
133
  }
140
134
 
141
135
  });
@@ -196,9 +190,7 @@
196
190
 
197
191
 
198
192
 
199
- 動作するのは確認できたのですが
193
+ 動作するのは確認できたのですが、わからない点が2つあります。
200
-
201
- わからないところが2点あります。
202
194
 
203
195
 
204
196
 
@@ -216,10 +208,20 @@
216
208
 
217
209
  BatchWriteItem()で一度にまとめて書き込めることは分かったのですが
218
210
 
219
- 今回のように引数にfunctionをもつ関数を複数回コールしたいときどのようにプログラムしたらよいのでしょうか?
211
+ 今回のように引数にfunctionをもつ関数を複数回コールしたいときどのようにプログラムするのがのでしょうか?
220
212
 
221
213
 
222
214
 
223
215
  同様のプログラムを作成された方がいましたら
224
216
 
225
217
  教えていただけると助かります。
218
+
219
+
220
+
221
+ 追記)
222
+
223
+ ★2はコードをテキストファイルにコピーして貼り付けなおしたところワーニングは消えました。
224
+
225
+ これでいいのかわかりませんが・・・。
226
+
227
+ 引き続き★1について何かわかることがあれば教えて下さい。