const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = async (event) => {

    var note = {};
    note.noteid = new Date().getTime();
    note.content = event.queryStringParameters["content"];

    var res = {};

    const response = {
        statusCode: 200,
        body: JSON.stringify(note),
    };

    var obj = {
        'TableName':'notes',
        'Item': {
          'note_id': {
            S: '2'
          },
          'name': {
            S: 'content'
          }
        },
        'ReturnConsumedCapacity': "TOTAL"
    };

    dynamodb.putItem(obj, function(err,result){
        console.log('function called!!');
        console.log(err);

        return response;
    });

};

我的putItem无法正常工作,未调用回调函数。我已经完全拥有此用户的 Angular 色,但仍未调用函数。

最佳答案

假设您正在使用AWS Lambda。由于您使用的是async/await模式,因此http响应最终是async (event) => {}返回的内容。就您而言,那不算什么。您调用了putItem,但没有等待它。 async (event) => {}之后立即不返回任何内容。由于函数已返回,因此您的putItem调用没有回调的机会。

您应该将putItem调用转换为promiseawait。然后处理结果并返回http响应。

const AWS = require('aws-sdk');
const dynamodb = new AWS.DynamoDB({apiVersion: '2012-08-10'});

exports.handler = async (event) => {

    var note = {};
    note.noteid = new Date().getTime();
    note.content = event.queryStringParameters["content"];

    var res = {};

    const response = {
        statusCode: 200,
        body: JSON.stringify(note),
    };

    var obj = {
        'TableName':'notes',
        'Item': {
          'note_id': {
            S: '2'
          },
          'name': {
            S: 'content'
          }
        },
        'ReturnConsumedCapacity': "TOTAL"
    };

    try
    {
        var result = await dynamodb.putItem(obj).promise();
        //Handle your result here!
    }
    catch(err)
    {
        console.log(err);
    }
    return response;
};

10-05 19:58