回答編集履歴
1
ソースコードの気になった点を追記
test
CHANGED
@@ -64,3 +64,74 @@
|
|
64
64
|
Source: "sample@example",
|
65
65
|
};
|
66
66
|
```
|
67
|
+
|
68
|
+
---
|
69
|
+
|
70
|
+
また回答とは関係ない個人的なソースコードの指摘ですが、
|
71
|
+
- varとconstが混在しているので、基本的にはconstで再代入を行う場合はletで宣言し、varを使わないようにしたほうが良いです
|
72
|
+
- dynamo.queryをしているところでコールバック関数の結果をPromiseで返していますが、SESのように.promiseを使うとよいかと思います
|
73
|
+
`return dynamo.query(params).promise()`
|
74
|
+
- インデントがズレているので、フォーマットをかけるようにお願いします
|
75
|
+
- 単純なFor文を回して配列内のオブジェクトを取り出すループの場合は配列のmap関数を使うとキレイに書けるかと思います
|
76
|
+
- DynamoDBを使うときは`aws.DynamoDB()`ではなく`aws.DynamoDB.DocumentClient()`を使う方が扱いやすいデータになります
|
77
|
+
|
78
|
+
以下例です
|
79
|
+
```javascript
|
80
|
+
const aws = require('aws-sdk')
|
81
|
+
const dynamo = new aws.DynamoDB.DocumentClient()
|
82
|
+
const ses = new aws.SES({ region: "ap-northeast-1" })
|
83
|
+
|
84
|
+
exports.handler = async () => {
|
85
|
+
const prm = {
|
86
|
+
tablename: "sampledb",
|
87
|
+
pk_name: "SendLayer",
|
88
|
+
pk_prm: "To",
|
89
|
+
sk_name: "UserId",
|
90
|
+
sk_prm: "99999",
|
91
|
+
}
|
92
|
+
const res = await dynamoquery_pksk(prm)
|
93
|
+
|
94
|
+
// https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/map
|
95
|
+
const to_list = res.Items.map(item => item["UserAddress"])
|
96
|
+
|
97
|
+
// https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SES.html#sendEmail-property
|
98
|
+
const email_params = {
|
99
|
+
Destination: {
|
100
|
+
ToAddresses: to_list,
|
101
|
+
CcAddresses: []
|
102
|
+
},
|
103
|
+
Message: {
|
104
|
+
Body: {
|
105
|
+
Text: {
|
106
|
+
Data: "株式会社"
|
107
|
+
},
|
108
|
+
},
|
109
|
+
|
110
|
+
Subject: { Data: "発注願い" },
|
111
|
+
},
|
112
|
+
Source: "sample@example",
|
113
|
+
}
|
114
|
+
console.log(email_params)
|
115
|
+
return ses.sendEmail(email_params).promise()
|
116
|
+
}
|
117
|
+
|
118
|
+
function dynamoquery_pksk(obj) {
|
119
|
+
// https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#query-property
|
120
|
+
const params = {
|
121
|
+
"TableName": obj.tablename,
|
122
|
+
"KeyConditionExpression": "#pk_name = :pk_prm and #sk_name < :sk_prm",
|
123
|
+
"ExpressionAttributeNames": {
|
124
|
+
"#pk_name": obj.pk_name,
|
125
|
+
"#sk_name": obj.sk_name
|
126
|
+
},
|
127
|
+
"ExpressionAttributeValues": {
|
128
|
+
":pk_prm": obj.pk_prm,
|
129
|
+
":sk_prm": obj.sk_prm,
|
130
|
+
}
|
131
|
+
}
|
132
|
+
return dynamo.query(params).promise()
|
133
|
+
}
|
134
|
+
```
|
135
|
+
|
136
|
+
JavascriptやAWSの学習は大変かと思いますが頑張ってください
|
137
|
+
|