Как использовать равно в FilterExpression для DyanmoDb API - PullRequest
0 голосов
/ 14 сентября 2018

У меня много проблем со сканированием и последующим использованием FilterExpression для фильтрации по одному значению. Я посмотрел на документацию API и другие вопросы переполнения стека, но все еще не могу понять, правильный синтаксис для этого. Так как я также впервые использую реагировать и JavaScript, это может быть проблемой с моим пониманием этого.

Ниже приведено то, что я пытаюсь использовать в качестве выражения фильтра. uploadId - это имя поля в таблице базы данных Dynamo, а event.pathParameters.id - это переменная, которая должна соответствовать значению, по которому фильтруются результаты сканирования.

FilterExpression: "uploadId = :event.pathParameters.id"

Ниже приведен код в контексте:

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

export async function main(event, context, callback) {
  const params = {
    TableName: "uploads",
    FilterExpression: "uploadId = :event.pathParameters.id"
  };

  try {
    const result = await dynamoDbLib.call("scan", params);
    if (result.Item) {
      // Return the retrieved item
      callback(null, success(result.Item));
    } else {
      callback(null, failure({ status: false, error: "Item not found." }));
    }
  } catch (e) {
    callback(null, failure({ status: false }));
  }
}

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 14 сентября 2018

Всегда используйте выражение с ExpressionAttributeValues. params должно выглядеть так.

const params = {
    TableName: "uploads",
    FilterExpression: "uploadId = :uid",
    ExpressionAttributeValues: {
        ":uid" : {S: event.pathParameters.id} //DynamoDB Attribute Value structure. S refer to String, N refer to Number, etc..
    } 
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...