1. ホーム
  2. node.js

[解決済み] クエリ条件がキースキーマ要素を見逃している : バリデーションエラー

2022-02-27 08:50:29

質問

をクエリしようとしています。 dynamodb を以下のコードで実行します。

const AWS = require('aws-sdk');

let dynamo = new AWS.DynamoDB.DocumentClient({
  service: new AWS.DynamoDB(
    {
      apiVersion: "2012-08-10",
      region: "us-east-1"
    }),
  convertEmptyValues: true
});

dynamo.query({
  TableName: "Jobs",
  KeyConditionExpression: 'sstatus = :st',
  ExpressionAttributeValues: {
    ':st': 'processing'
  }
}, (err, resp) => {
  console.log(err, resp);
});

これを実行すると、次のようなエラーが発生します。

ValidationException: Query condition missed key schema element: id

これがわからないのです。私は id をパーティションキーとして jobs テーブルの中にあるすべてのジョブを検索する必要があります。 processing の状態です。

解決方法は?

主キーを含まない条件でクエリーを実行しようとしています。これは DynamoDBにおけるクエリの動作 . を行う必要があります。 をスキャンして、情報を得ることができます。 しかし、それがベストな選択とは思えません。

を設定したいのだと思います。 グローバルセカンダリーインデックス をクエリし、そのクエリで processing の状態になります。