我正在使用带有lambda函数的rest api生成rest api,以从AWS中的dynamodb获取数据,这是我的lambda函数方法来获取数据
app.get(path, function (req, res) {
var condition = {}
condition[partitionKeyName] = {
ComparisonOperator: 'EQ'
}
if (userIdPresent && req.apiGateway) {
condition[partitionKeyName]['AttributeValueList'] = [req.apiGateway.event.requestContext.identity.cognitoIdentityId || UNAUTH];
} else {
try {
condition[partitionKeyName]['AttributeValueList'] = [convertUrlType(req.params[partitionKeyName], partitionKeyType)];
} catch (err) {
res.statusCode = 500;
res.json({
error: 'Wrong column type ' + err
});
}
}
let queryParams = {
TableName: tableName,
KeyConditions: condition
}
dynamodb.scan(queryParams, (err, data) => {
if (err) {
res.statusCode = 500;
res.json({
error: 'Could not load items: ' + err
});
} else {
res.json(data.Items);
}
});
});
这就是我从component.ts文件中的角度使用此方法的方式
import { API } from 'aws-amplify';
apiName = 'createTicket'; // replace this with your api name.
path = '/createNewTicket'; // replace this with the path you have configured on your API
getMyInit = {
headers: {},
response: true,
queryStringParameters: { // OPTIONAL
'id': 'KOS-17-117-1'
}
}
API.get(this.apiName, this.path, this.getMyInit).then(response => {
console.log("'tickets' component-> All Tickets Retrieved Successfully!");
console.log(response)
}).catch(error => {
console.log("'tickets' component-> Error in Retreiving All Tickets from server!");
console.log(error.response)
});
现在当我使用
dynamodb.scan(queryParams, (err, data) => {
if (err) {
res.statusCode = 500;
res.json({
error: 'Could not load items: ' + err
});
} else {
res.json(data.Items);
}
});
在我的lambda函数中,它成功返回了所有表数据,但是当我使用时,
dynamodb.query(queryParams, (err, data) => {
if (err) {
res.statusCode = 500;
res.json({
error: 'Could not load items: ' + err
});
} else {
res.json(data.Items);
}
});
它不返回任何内容,我想查询具有特定ID或表中其他列的表,我不确定我在这里做错了什么,我想应该是这样
queryStringParameters
getMyInit = {
headers: {},
response: true,
queryStringParameters: { // OPTIONAL
'id': 'KOS-17-117-1'
}
}
但是它不起作用,我得到了这个错误
“无法加载项目:ValidationException:一个或多个参数 值无效:EQ的参数数目无效 比较运算符”