جاوااسکریپت - نحو صحیح برای گرفتن() entries که کلید مرتبسازی با یک زیررشته شروع میشود با استفاده از AWS.DynamoDB.DocumentClient در NodeJS چیست؟


نحو صحیح برای پرس و جو از رکوردهای پایگاه داده که کلید مرتبسازی آنها با یک رشته خاص شروع میشود چیست؟

من فکر میکنم چیزی شبیه به این است که

const query_params = { 
 TableName: 'my_table',
   Key: {
      my_primary_key: 'a_primary_key_value',
   },
   FilterExpression: "my_sort_key begins_with :string",
   ExpressionAttributeValues: { 
     ":string": "starts_with_substring" 
   }
};

پس از آن dynamoDb.get(query_params, ... میآید، اما این کاملاً درست نیست. من با خطای ValidationException: The provided key element does not match the schema مواجه میشوم.

پاسخ شماره ۱

طبق مستندات پرسوجوی SDK، پارامترهای پرسوجوی شما باید به این شکل باشند

{
    TableName: "my-table",
    KeyConditionExpression: "#pk= :pk And begins_with(#sk, :sk)",
    ExpressionAttributeValues: {
      ":pk": "a_primary_key_value",
      ":sk": "starts_with_substring"
    },
    ExpressionAttributeNames: {
      "#pk": "my_primary_key",
      "#sk": "my_sort_key"
    }
}

شما همچنین نیاز دارید که dynamoDb.get() را به dynamoDb.query() تغییر دهید.