DynamoDB Filter Expressions с помощью МЕЖДУ - PullRequest
0 голосов
/ 06 июля 2019

Я выполняю операцию сканирования в моей таблице DynamoDB, затем фильтрую результат, чтобы иметь элементы между двумя датами в NODE.js

Таблица DynamoDB форматирует данные следующим образом:

{
      TableName: tableName,
      Item: {
      "visitorID": visitorIDq, // Primary Key
      "dateID":   dateTime, // What I am filtering the scan for
      "visitorName": "END OF Q",
      "employeeName": "END OF Q",
      "comments":  "END OF Q"
}

Текущий код:

var date1 = String(threeMonths); // milliseconds since epoch - 3 months in milliseconds 
var date2 = String(dateTime); // milliseconds since epoch aka now
var params2 = {
    TableName: tableName,
    FilterExpression: "dateID BETWEEN :date1 and :date2",
    ExpressionAttributeValues: {
    ":date1": { "S": date1},
    ":date2": { "S": date2}
            }
};

Я получаю эту ошибку:

ОШИБКА Невозможно отсканировать таблицу. Ошибка JSON: {"message": "Неверно FilterExpression: неверный тип операнда для оператора или функции; оператор или функция: МЕЖДУ, тип операнда: M "," код ": «ValidationException», «время»: «2019-07-06T02: 00: 44.569Z»,
"requestId": "REQUESTID1294743204701HHH443", "statusCode": 400,
«retryable»: false, «retryDelay»: 26.7865000058784}

После некоторых поисков в интернете я застрял, и больше никого не нашел с этой проблемой в узле. Есть идеи?

По какой-то причине переполнение стека говорит мне, что это в основном код. Я думал, что проделал довольно хорошую работу, объясняя это и рассказывая подробности. Это заполнитель текста, потому что я пост пост. Это все еще происходит. Подробности. Подробности. Подробности.

1 Ответ

0 голосов
/ 09 июля 2019

Правильное разрешение:

var dateID = String("\""+ threeMonths + "\""); // var for time in milliseconds, stringifying
var params2 = {
  ExpressionAttributeValues: {
    ':msID' : dateID
  },
  FilterExpression: "dateID >= :msID", // dateID column in DDB is greater than epoch - 3 months
  TableName: "Visitor"
};

JSON.stringify(params2); //params are stringified here for the scan

В частности:


ExpressionAttributeValues: {
    ':msID' : "15666767546459" // or whatever value you are comparing, the above resolution has dateID there because its a var getting current time
  }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...