【发布时间】:2018-07-29 19:18:33
【问题描述】:
当我为我的 Lambda 函数提供用于 GetItem 调用的无效主键时,它似乎会搜索该键直到超时,但它仍然只返回 200(没有响应正文)。
有什么方法可以确保函数在遍历表一次后中止而不找到键并返回错误消息?让它一遍又一遍地查看直到超时似乎是在浪费功能时间?此外,它在 1000 毫秒后超时,这不是我的函数超时设置,这让我认为这里除了常规超时之外还有其他事情发生。
代码:
'use strict';
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();
exports.handler = (event, context, callback) => {
const done = (err, res) => {
const response = {
statusCode: err ? '400' : '200',
body: err ? JSON.stringify(err) : JSON.stringify(res)
}
callback(null, response);
};
const groupId = event.pathParameters.groupId;
const eventId = event.pathParameters.eventId;
docClient.get({
TableName: 'events',
Key: {
groupId,
eventId
}
},
(err, data) => {
done(err, data.Item);
});
};
【问题讨论】:
-
你能告诉你在
docClient.get的回调中得到了什么吗?? -
console.log(err, data) 给出 err: null, data: {}
-
使用这个,我可以应用一些条件逻辑来检查它是否返回一个空对象等,但我真的宁愿中止并让它返回一个错误
-
好吧,你是说,它应该返回错误而不是空对象?
-
在一个完美的世界中,我希望函数在它“意识到”我提供了不正确的主键后停止,然后返回一些错误,告诉客户端它找不到表中具有该主键的项目,是的!
标签: node.js aws-lambda amazon-dynamodb