dynamodb deleteItem 有效,但它的回调返回未定义

dynamodb deleteItem works, but it's callback returning undefined

我创建了一个 deleteItem lambda 函数,如果找到一个项目的 userId,它会删除该项目。 userId 作为 pathParameter 传递,如果找到 userId 则没有问题。

let output = await deleteUser(userId);
console.log("output: " + JSON.stringify(output))

总是returns output: undefined

每次是否找到并删除。我需要 deleteItem 操作的响应,以便我可以 return 消息 User not foundUser deleted 基于该响应。

如何让 dynamodb 回调正常工作?

delete.js

const AWS = require('aws-sdk');
AWS.config.update({ region: 'us-east-1' });

const dynamoDB = new AWS.DynamoDB();

const tableName = process.env.TABLE_NAME;

exports.handler = async (event) => {

    let userId = event.pathParameters.userid;

    try {
        let output = await deleteUser(userId);
        console.log("output: " + JSON.stringify(output))
        return {
            statusCode: 200,
            body: JSON.stringify({
                message: "User deleted"
            })
        };


    } catch (err) {
        console.log("ERROR TIME")
        console.log("ERROR:" + err)

        return {
            statusCode: 500,
            body: JSON.stringify({
                message: "User failed to be deleted"
            })
        };

    }


    async function deleteUser(userId) {
        let params = {
            TableName: tableName,
            "Key": {
                "userid": {
                    "S": userId.toString()
                }
            }
        };
        try {
            const dbResponse = await dynamoDB.deleteItem(params).promise();

            console.log("dbResponse")
            console.log(dbResponse)

            if (dbResponse.Item) {
                console.log(`deleted row with userId of ${userId}`);
                return (dbResponse);
            }
        } catch (err) {
            console.log(`user reset failed with ${err}`);
            return {
                statusCode: 500,
                body: JSON.stringify({
                    errr: err
                })
            };
        }
    }


};

这是因为 dbResponse 没有名为 Item 的 属性,所以这个条件永远不会满足:

 if (dbResponse.Item) {

我建议查看 the documentation 以查看预期的响应格式,或者至少记录 dbResponse 以便您可以查看返回的内容。