🙆
DynamoDBでPromiseが使えた(Lambda Node.js)
はじめに
Lambda(Node.js)でDynamoDBに接続し、値を取得したいときに、 非同期であるために、自分でPromiseで返す関数を作成していた。
コード
/**
* データの挿入を行う。
* @param ddb
* @param params
* @returns {Promise<any>}
*/
exports.addItem = function (ddb, params) {
return new Promise(function (resolve) {
ddb.putItem(params, function (err, data) {
if (err) {
console.log("PUT失敗", err, err.stack);
} else {
console.log("PUT成功");
resolve(data);
}
});
});
};
await this.addItem(ddb, putParams);
改善後
なんと最後にpromise()を呼ぶことで、Promise型のものを返却してくれるようで、わざわざ自分でラップする必要がなかった。
await ddb.getItem(findParams, function (err, data) {
if (err) {
console.log("GET失敗");
} else {
console.log("GET成功");
}
}).promise();
Discussion