使用 pk 和 sk returns undefined 通过 lambda 查询 dynamodb
query on dynamodb through lambda using pk and sk returns undefined
我有一个 lambda 函数,它使用 pk 和 sk 调用 dynamodb table。出于某种原因,我得到的 return 数据未定义。检查 cloudwatch 日志后,我看到以下错误消息。我在这里做错了什么?
2021-10-01T00:15:03.104Z cdd7201f-0c95-4283-9257-c07324998896 INFO BOL 数据:未定义
2021-10-01T00:15:03.124Z cdd7201f-0c95-4283-9257-c07324998896 信息 BOL 错误:类型错误:无法读取未定义的 属性 'PK'
在 getUserById (/var/task/getUserById.js:16:27)
在 processTicksAndRejections (internal/process/task_queues.js:95:5)
这是错误所指的 lambda 代码 -
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();
async function getUserById(userId) {
console.log('USERID:',userId);
const params = {
TableName:"Bol",
KeyConditionExpression: 'PK = :hashKey and SK = :sortKey',
ExpressionAttributeValues: {
':hashKey': userId,
':sortKey': 'USER'
}
};
try {
const { Item } = await docClient.query(params).promise();
console.log('BOL Data:',Item);
return { id: Item.PK, name: Item.Data.displayName };
} catch(err) {
console.log("BOL Error: ", err);
}
}
module.exports = getUserById;
下面是我应该在 lambda 上收到的数据 -
这是你初始化 Item
的方式
您可以尝试使用以下方法获取对象
try {
const Item = await docClient.query(params).promise();
Item.Items.forEach(function(item) {
let buffer=item.Data+" -- "+item.PK;
console.log("buffer ",buffer)
});
} catch(err) {
console.log("BOL Error: ", err);
}
您可以通过多种方式获得好评:
Making Requests with the Document Client
我有一个 lambda 函数,它使用 pk 和 sk 调用 dynamodb table。出于某种原因,我得到的 return 数据未定义。检查 cloudwatch 日志后,我看到以下错误消息。我在这里做错了什么?
2021-10-01T00:15:03.104Z cdd7201f-0c95-4283-9257-c07324998896 INFO BOL 数据:未定义
2021-10-01T00:15:03.124Z cdd7201f-0c95-4283-9257-c07324998896 信息 BOL 错误:类型错误:无法读取未定义的 属性 'PK' 在 getUserById (/var/task/getUserById.js:16:27) 在 processTicksAndRejections (internal/process/task_queues.js:95:5)
这是错误所指的 lambda 代码 -
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient();
async function getUserById(userId) {
console.log('USERID:',userId);
const params = {
TableName:"Bol",
KeyConditionExpression: 'PK = :hashKey and SK = :sortKey',
ExpressionAttributeValues: {
':hashKey': userId,
':sortKey': 'USER'
}
};
try {
const { Item } = await docClient.query(params).promise();
console.log('BOL Data:',Item);
return { id: Item.PK, name: Item.Data.displayName };
} catch(err) {
console.log("BOL Error: ", err);
}
}
module.exports = getUserById;
下面是我应该在 lambda 上收到的数据 -
这是你初始化 Item
您可以尝试使用以下方法获取对象
try {
const Item = await docClient.query(params).promise();
Item.Items.forEach(function(item) {
let buffer=item.Data+" -- "+item.PK;
console.log("buffer ",buffer)
});
} catch(err) {
console.log("BOL Error: ", err);
}
您可以通过多种方式获得好评:
Making Requests with the Document Client