Получить данные из DynamoDB с датой больше, чем на прошлой неделе - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь получить данные из DynamoDB по определенным критериям, идея в том, чтобы получить только userid и modules_completed на прошлой неделе. Я могу изменить структуру данных, если вы считаете, что лучше использовать правильный подход.

Я пытаюсь получить все данные, затем фильтровать, но я думаю, что есть способ сделать это лучше и получить только те данные, которые мне нужны

Вот структура данных

{
  "modules_complete": {
    "19huH6KOy0EYau0e0Oc6CG": "2018-12-15T00:00:00",
    "1Fr3I1pE6IcSEy4s0o0UwW": "2018-12-31T00:00:00",
    "1G4eA3HDhCOcUgaIsg46OU": "2018-12-31T00:00:00",
    "1H60VNa4dG0AkuM0agwkI6": "2019-05-10T00:00:00",
    "1UIrWAsEP6YUyQEiy4WAww": "2018-12-31T00:00:00",
    "3extCHS2cg02YCY6GMEkG6": "2018-12-31T00:00:00",
    "3u1BA8lkVYR9fHKiLzRge7": "2019-04-05T00:00:00",
    "4eQUYsAKvDYYT7113b3E6J": "2019-04-05T00:00:00",
    "4gnGMMruak2qU0yQqy884g": "2018-12-15T00:00:00",
    "4Pwu13n5DJerzgv5T2Ryeu": "2019-04-05T00:00:00",
    "6lk1HPWKNaY0mWkU0Io6iq": "2018-12-31T00:00:00"
  },
  "scores": {
    "3GDBJOWUJ2OW4mQm26YwGo": 0,
    "4vhRRSqeUwEoAKSqOagwWU": 100
  },
  "userid": "00570000001J1crAAC"
}

А вот код, который я сделал

      var date = new Date();
      date.setDate(date.getDate() - 7);
      const lastWeek = moment(date).format("YYYY-MM-DDTHH:mm:ss");

      var params = {
        TableName: 'table-name',
      };

      dynamodb.scan(params, function (err, data) {
        if (err) console.log(err, err.stack);
        else {
          var items = data.Items;
          var modulesCompletedLastWeek = []
          for (const item of items) {
            var modules = item.modules_complete.M;
            var userId = item.userid.S;
            var modulesCompleted = []
            for (const module in modules) {
              if (modules.hasOwnProperty(module))
                if (modules[module].S > lastWeek) {
                    modulesCompleted.push(moduleInfo)
                }
            }
          }
          console.log('modulesCompletedLastWeek', modulesCompletedLastWeek);
        }
      });

Я ожидал массив с объектом модулей, завершенным на прошлой неделе, и идентификатором пользователя.

PLUS Можно ли заставить получать те же данные, но с диапазоном дат?

Спасибо

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