必须指定KeyConditions或KeyConditionExpression参数Nodejs和DynamoDB

时间:2019-03-26 21:15:09

标签: node.js regex attributes amazon-dynamodb expression

我有以下节点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 });
  }
}

id为uuid格式,当从我的节点js插入时,使用以下方式导入

import uuid from "uuid";

然后将其插入到表中,例如:

brandId: uuid.v1()

现在,当我查询表中的项目时,当且仅当我在表达式属性值中硬编码了记录的uuid时,我才只能获得一条记录,因此我考虑添加一个正则表达式以匹配所有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}

\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b

我尝试了其他示例,但没有一个可行,添加一个正则表达式以获取所有项目是否正确,如果可以的话,合适的正则表达式是什么?

1 个答案:

答案 0 :(得分:0)

使用“扫描”操作获取表中的所有项目。