代码之家  ›  专栏  ›  技术社区  ›  user8402764

如何在dyanmodbapi的FilterExpression中使用equals

  •  0
  • user8402764  · 技术社区  · 6 年前

    下面是我试图使用的过滤器表达式。uploadId是Dynamo数据库表中的字段名事件.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 }));
      }
    }
    

    谢谢你的帮助!

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ricky Mo    6 年前

    始终将表达式与 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..
        } 
    };