使用 NodeJs 的 AWS DynamoDB 查询
AWS DynamoDB Query with NodeJs
我有一个 AWS DynamoDB table,其中包含列电子邮件(分区键)和密码。
我想 运行 一个查询,其中包含获取匹配记录以及提供电子邮件和密码的组合。
我正在使用 JavaScript(NodeJs) AWS SDK 进行集成。
但是我在执行查询时面临一些挑战,下面是我正在使用的代码块-
var params = {
TableName : "tblUsers",
KeyConditionExpression : 'email = :emailValue',
FilterExpression : '#password= :passwordValue',
ExpressionAttributeNames : {
'#password' : 'password'
},
ExpressionAttributeValues : {
':emailValue' : email,
':passwordValue' : password
}
};
dynamodb.query(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
//console.log("Success", data.Items);
data.Items.forEach(function(element, index, array) {
console.log(element);
});
}
});
以下是我收到的错误 -
Error MultipleValidationErrors: There were 8 validation errors:
* InvalidParameterType: Expected params.ExpressionAttributeValues[':value'] to be a structure
* UnexpectedParameter: Unexpected key '0' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '1' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '2' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '3' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '4' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '5' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '6' found in params.ExpressionAttributeValues[':value']
试试这样的方法:
const AWS = require("aws-sdk");
const documentClient = new AWS.DynamoDB.DocumentClient({ region: "us-west-2" });
const query = async () => {
const response = await documentClient
.query({
TableName: "tblUsers",
ExpressionAttributeNames: {
"#password": "password",
"#email": "email"
},
ExpressionAttributeValues: {
":emailValue": "email",
":passwordValue": "password",
},
FilterExpression: "#password = :passwordValue",
KeyConditionExpression: "#email = :emailValue",
})
.promise();
console.log(`Query response: ${JSON.stringify(response, null, 2)}`);
};
query().catch((error) => console.error(JSON.stringify(error, null, 2)));
我有一个 AWS DynamoDB table,其中包含列电子邮件(分区键)和密码。
我想 运行 一个查询,其中包含获取匹配记录以及提供电子邮件和密码的组合。
我正在使用 JavaScript(NodeJs) AWS SDK 进行集成。
但是我在执行查询时面临一些挑战,下面是我正在使用的代码块-
var params = {
TableName : "tblUsers",
KeyConditionExpression : 'email = :emailValue',
FilterExpression : '#password= :passwordValue',
ExpressionAttributeNames : {
'#password' : 'password'
},
ExpressionAttributeValues : {
':emailValue' : email,
':passwordValue' : password
}
};
dynamodb.query(params, function(err, data) {
if (err) {
console.log("Error", err);
} else {
//console.log("Success", data.Items);
data.Items.forEach(function(element, index, array) {
console.log(element);
});
}
});
以下是我收到的错误 -
Error MultipleValidationErrors: There were 8 validation errors:
* InvalidParameterType: Expected params.ExpressionAttributeValues[':value'] to be a structure
* UnexpectedParameter: Unexpected key '0' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '1' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '2' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '3' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '4' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '5' found in params.ExpressionAttributeValues[':value']
* UnexpectedParameter: Unexpected key '6' found in params.ExpressionAttributeValues[':value']
试试这样的方法:
const AWS = require("aws-sdk");
const documentClient = new AWS.DynamoDB.DocumentClient({ region: "us-west-2" });
const query = async () => {
const response = await documentClient
.query({
TableName: "tblUsers",
ExpressionAttributeNames: {
"#password": "password",
"#email": "email"
},
ExpressionAttributeValues: {
":emailValue": "email",
":passwordValue": "password",
},
FilterExpression: "#password = :passwordValue",
KeyConditionExpression: "#email = :emailValue",
})
.promise();
console.log(`Query response: ${JSON.stringify(response, null, 2)}`);
};
query().catch((error) => console.error(JSON.stringify(error, null, 2)));