代码之家  ›  专栏  ›  技术社区  ›  taigi100

AWS lambda:使用nodejs 8.1将数据写入dynamodb

  •  0
  • taigi100  · 技术社区  · 6 年前

    以下代码在nodejs 6.1中工作正常

    console.log('Starting function registration');
    
    const AWS = require('aws-sdk');
    AWS.config.update({region: 'eu-central-1'});
    const docClient = new AWS.DynamoDB({apiVersion: '2012-10-08'});
    
    exports.handler = function(event, context, callback) {
    
        var params = {
          'TableName' : 'services',
          'Item': {
             'name': {S: 'test'},
             'phone': {S: '0742324232'},
             'available': {BOOL: true}
             }
        };  
    
        docClient.putItem(params, function(err, data) {
          if (err) {
            console.log("Error", err);
            callback(err);
          } else {
            console.log("Success", data);
            callback(data);
         }});
    };
    

    但是,当尝试在nodejs 8.1样式中使用它时,它不会向数据库中写入任何内容:

    console.log('Starting function registration');
    
    const AWS = require('aws-sdk');
    AWS.config.update({region: 'eu-central-1'});
    const docClient = new AWS.DynamoDB({apiVersion: '2012-10-08'});
    
    exports.handler = async (event, context, callback) => {
    
        var params = {
          'TableName' : 'services',
          'Item': {
             'name': {S: 'test2'},
             'phone': {S: '0742324232'},
             'available': {BOOL: false}
             }
        };  
    
        var {err, data} = await docClient.putItem(params);
        return data;
    };
    

    我觉得我遗漏了Async/Wait的一些用法,但是我不知道是什么。使用nodejs 8.1和lambda函数将项目写入dynamodb的正确方法是什么?

    1 回复  |  直到 6 年前
        1
  •  4
  •   nerdier.js    6 年前

    它不能与原告async/await一起工作,因为putItem(或者,一般来说,如果您通过AWS SDK使用任何dynamdb方法)是一个回调方法,它返回数据和错误。异步/等待与承诺而不是回调一起工作。

    您可能希望先确认dynamodb方法,使其与async/await一起工作。