我在dynamoDB中有一个名为“参与者”的表。我有一个主组合键,其中哈希键为“ UserId”,排序键为“ NoteId”。我想查询属于特定哈希键的所有项目。
现在,如果我使用aws-cli,以下命令将起作用:
aws dynamodb query \
--table-name Contributors \
--key-condition-expression 'UserId = :UserId' \
--expression-attribute-values '{
":UserId": {"N":"2"}
}'
但是,当我在Node.js中编写查询时,以下两个param对象都不起作用:
var params = {
TableName: "Contributors",
KeyConditionExpression: "#UserId = :UserId",
ExpressionAttributeNames: {
"#UserId": "UserId"
},
ExpressionAttributeValues: {
":UserId": { "N": "2" }
}
};
或这个:
var params = {
TableName: "Contributors",
KeyConditionExpression: "#UserId = :UserId",
ExpressionAttributeNames: {
"#UserId": "UserId"
},
ExpressionAttributeValues: {
":UserId": "2"
}
};
我收到以下错误:
ValidationException:一个或多个参数值无效:条件参数类型与架构类型不匹配
正确的参数对象应该是什么?
下面的代码应该工作。只需给出不带双引号的值即可。该DocumentClient
会自动解释数据类型。
var docClient = new AWS.DynamoDB.DocumentClient();
var params = {
TableName: "Contributors",
KeyConditionExpression: "#UserId = :UserId",
ExpressionAttributeNames: {
"#UserId": "UserId"
},
ExpressionAttributeValues: {
":UserId": 2
}
};
docClient.query(params, function(err, data) {
if (err) {
console.error("Unable to read item. Error JSON:", JSON.stringify(err,
null, 2));
} else {
console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句