我在扫描时遇到很多麻烦,然后使用FilterExpression根据单个值进行过滤。我看过api文档和其他堆栈溢出问题,但是仍然无法确定正确的语法。由于我也是第一次使用react和javascript,因此我对它们的理解可能是一个问题。
以下是我尝试用作过滤器表达式的内容。 uploadId是Dynamo数据库表中的字段名称,event.pathParameters.id是应解析为扫描结果所依据的值的变量。
FilterExpression: "uploadId = :event.pathParameters.id"
下面是上下文中的代码:
import * as dynamoDbLib from "./libs/dynamodb-lib";
import { success, failure } from "./libs/response-lib";
export async function main(event, context, callback) {
const params = {
TableName: "uploads",
FilterExpression: "uploadId = :event.pathParameters.id"
};
try {
const result = await dynamoDbLib.call("scan", params);
if (result.Item) {
// Return the retrieved item
callback(null, success(result.Item));
} else {
callback(null, failure({ status: false, error: "Item not found." }));
}
} catch (e) {
callback(null, failure({ status: false }));
}
}
谢谢您的帮助!
答案 0 :(得分:0)
始终将表达式与ExpressionAttributeValues
一起使用。 params
应该看起来像这样。
const params = {
TableName: "uploads",
FilterExpression: "uploadId = :uid",
ExpressionAttributeValues: {
":uid" : {S: event.pathParameters.id} //DynamoDB Attribute Value structure. S refer to String, N refer to Number, etc..
}
};