はじめに
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();
コメント