如何使用 Node.js 检索 DynamoDB 表中的所有项目?

Kha*_*led 6 node.js amazon-dynamodb

我有以下 Node js 代码,应列出 DynamoDB 表中的所有项目,

import * as dynamoDbLib from "../../libs/dynamodb-lib";
import { success, failure } from "../../libs/response-lib";

export async function main(event, context) {
  const params = {
    TableName: "brands",

    KeyConditionExpression: "brandId = :brandId",
    ExpressionAttributeValues: {
      ":brandId": ''
    }
  };

  try {
    const result = await dynamoDbLib.call("query", params);
    return success(result.Items);
  } catch (e) {
     console.log(e);
     return failure({ status: false });
  }
}
Run Code Online (Sandbox Code Playgroud)

id 采用 uuid 格式,当从我的节点 js 插入时,使用以下命令导入:

import uuid from "uuid";
Run Code Online (Sandbox Code Playgroud)

然后插入到表中,如下所示:

brandId: uuid.v1()
Run Code Online (Sandbox Code Playgroud)

现在,当我查询表中的项目时,当且仅当我在表达式属性值中硬编码记录的 uuid(必须指定 KeyConditions 或 KeyConditionExpression 参数)时,我只能获取一条记录。所以我想到添加一个正则表达式来匹配所有的uuid,我的正则表达式是从网络上的一些解决方案复制的,但它不起作用,如下所示:

[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}
Run Code Online (Sandbox Code Playgroud)

\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b
Run Code Online (Sandbox Code Playgroud)

我尝试过其他示例,但没有一个起作用,添加正则表达式来获取所有项目是否正确,如果是,正确的正则表达式是什么?

and*_*amm -3

使用 Scan 操作获取表中的所有项目。

来自AWS 开发人员指南

scan 方法读取表中的每一项并返回表中的所有数据。您可以提供可选的filter_expression,以便仅返回与您的条件匹配的项目。但是,仅在扫描整个表后才应用过滤器。

  • 具体问题是尝试从表中检索所有项目。正确的做法是扫描...... (3认同)