javascript - 如何在 DyanmoDb API 的 FilterExpression 中使用 equals
问题描述
我在扫描然后使用 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 }));
}
}
谢谢您的帮助!
解决方案
始终将表达式与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..
}
};
推荐阅读
- javascript - 使特定的底层元素表现/渲染就像在叠加层之上
- c++ - C++图像处理:统一平滑操作使图像更暗
- rust - Rust 中的 u128 乘法错误?
- r - 时间序列异常值处理 R(tsibble 对象)
- jquery - Bootstrap File Input Advanced Usage with angular 7 and bootstrap 4
- cucumber - 使用 @ExtendedCucumberOptions 调用 RunCukeTest 引发初始化错误
- angular - 错误:应调用间谍 MovieService.getWatchListedMovies。角度单元测试
- azure - 无法访问 Azure Functions 的管理员 URL
- android - 如何以 Gridview 的形式创建 recyclerview?
- python - 没有名为“Torch”的模块