我正在使用 AWS DynamoDB DocumentClient 来查询我的 DynamoDB 表。在我的表中,我有一个名为“_id”的属性,它为每个条目保存一个唯一的 ID。当我尝试根据此 ID 查询记录时,我最终收到一条错误消息:“无效的 KeyConditionExpression:语法错误; token :\"_\",靠近:\"_id\""。进行此查询的代码如下。
function findById(id) {
//Build query
var params = {};
params.TableName = "recordDev";
params.IndexName = "_id";
params.KeyConditionExpression = '_id = :id';
params.ExpressionAttributeValues = {
':id': id
};
return DynamoDB
.query(params).promise()
.then(function(records) {
return records.Items[0];
})
.catch(function(error) {
return Promise.reject(error);
});
};
在为 DynamoDB 构建查询参数时,我是否缺少关于使用“_”的内容?我曾尝试四处寻找类似的错误,但一直无法找到与我的场景类似的错误。
最佳答案
您可以尝试使用 ExpressionAttributeNames 参数吗?
var params = {};
params.TableName = "recordDev";
params.IndexName = "_id";
params.KeyConditionExpression = '#id = :id';
params.ExpressionAttributeValues = {
':id': id
};
params.ExpressionAttributeNames: {
"#id":"_id"
};
关于amazon-dynamodb - DynamoDB - 为什么我不能在我的关键条件表达式中使用 "_"作为前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42198091/