如何在 AWS DynamoDb js sdk 中使用 begin_with?

Ani*_*aje 7 javascript amazon-web-services node.js amazon-dynamodb aws-sdk

我有一个用例在AWS Dynamodb 表的主排序键上应用begin_with, 我可以使用来自 AWS 控制台的 begin_with 键条件查询表, 我希望使用 AWS Javascript SDK 实现相同的目的。


在此处输入图片说明 在此处输入图片说明

我的表中有以下字段 -
1. user_id(主分区键
2. user_relation(主排序键

我尝试了以下代码 -

let AWS = require('aws-sdk');
let util = require('util');

AWS.config.update({
    region: 'us-east-1'
});

let connection = new AWS.DynamoDB.DocumentClient();

let params = {
    TableName: 'user_details',
    KeyConditionExpression: 'user_id = :user_id and user_relation begins_with :user_relation',
    ExpressionAttributeValues: {
        ':user_id': "1234",
        ':user_relation': "followed-by"
    }
};

console.log('getQuery Params => ', params);
let dynamoDb = util.promisify(connection.query).bind(connection);
let results = await dynamoDb(params);
console.log('results => ', results);
Run Code Online (Sandbox Code Playgroud)

我收到语法错误,在查询 AWS DynamoDb 表时使用begin_with的正确方法是什么?

错误 -

(node:40474) UnhandledPromiseRejectionWarning: ValidationException: Invalid KeyConditionExpression: Syntax error; token: "begins_with", near: "user_relation BE
GINS_WITH :user_relation"
Run Code Online (Sandbox Code Playgroud)

参考 -
https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html#query-property

DynamoDB,如何使用 BEGINS_WITH

查询无法使用 Begins_with 查询 DynamoDB 以获取项目列表

uda*_*486 20

尝试 :

const params = {
  TableName: 'user_details',
  KeyConditionExpression: '#user_id = :user_id and begins_with(#user_relation, :user_relation)',
  ExpressionAttributeNames:{
    "#user_id": "user_id",
    "#user_relation": 'user_relation'
  },
  ExpressionAttributeValues: {
    ":user_id": "1234",
    ":user_relation": "followed-by"
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 更新了答案,测试了一下。有用。begins_with 是一个函数,调用方式类似于“begins_with(#user_relation, :user_relation)” (2认同)