【问题标题】:Promisify is not a functionPromisify 不是函数
【发布时间】:2020-04-29 22:06:42
【问题描述】:

我正在研究 lex,我正在尝试在使用 NodeJS 时将用户数据存储在 DynamoDB 中

这是我的代码:

'use strict';

const uuidV1 = require('uuid/v1');
const AWS = require('aws-sdk');
const promisify = require('es6-promisify');
const dynamo = new AWS.DynamoDB.DocumentClient();

module.exports.saveBookingToDatabase = function(Arrival_city, Departure_city, Flight_type, Phone_number){
    console.log('saveBookingToDatabase');

    const item = {};
    item.bookingId = uuidV1();
    item.arrivalCity = Arrival_city;
    item.departureCity = Departure_city;
    item.classType = Flight_type;
    item.phone = Phone_number;

    const params = {
        TableName: 'airstallion',
        Item: item
    };



  const putAsync = promisify(dynamo.put, dynamo);

  return putAsync(params).then(() => {
      console.log(`Saving ticket ${JSON.stringify(item)}`);
      return item;
    })
    .catch(error => {
      Promise.reject(error);
    });
  }

当我运行程序时返回以下error

【问题讨论】:

    标签: node.js amazon-web-services amazon-dynamodb amazon-lex


    【解决方案1】:

    由于 aws-sdk 库支持 Promise,因此无需使用 es6-promisify 库。使用 node.js async/await 我们将实现相同的用例。

    'use strict';
    
    const uuidV1 = require('uuid/v1');
    const AWS = require('aws-sdk');
    const dynamo = new AWS.DynamoDB.DocumentClient();
    
    module.exports.saveBookingToDatabase = async function(Arrival_city, Departure_city, Flight_type, Phone_number){
        console.log('saveBookingToDatabase');
    
        const item = {};
        item.bookingId = uuidV1();
        item.arrivalCity = Arrival_city;
        item.departureCity = Departure_city;
        item.classType = Flight_type;
        item.phone = Phone_number;
    
        const params = {
            TableName: 'airstallion',
            Item: item
        };
    
        try {
            let result = await dynamo.put(params)
            console.log(`Saving ticket ${JSON.stringify(item)}`);
        return item;  
        } catch(e) {
            throw (e)
        }
    }
    

    【讨论】:

    • 是的,感谢错误解决,但出现了新错误(DeprecationWarning: Deep requires like const uuidv1 = require('uuid/v1'); is deprecated as of uuid@7.x)
    • 所需的 uuid/v1 库在 uuid@7.x 库中已弃用,请将您的模块导入更新为import { v1 as uuidv1 } from 'uuid'; 更多信息请查看此link
    • 表已创建,但 Dynamodb 表中未显示数据,响应也成功
    • 你能检查一下dynamodb响应对象吗,当表中没有条目时,应该是验证问题或异常。
    猜你喜欢
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2021-07-26
    相关资源
    最近更新 更多