从DynamoDB获取日期大于上周的数据

时间:2019-06-10 10:36:33

标签: javascript amazon-dynamodb

我正在尝试使用某些条件从DynamoDB中获取数据,这个想法是上周仅获取useridmodules_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);
        }
      });

我期望一个数组,其中包含上周完成的模块对象和用户ID。

是否可以获取相同的数据但有一定的日期范围?

谢谢

0 个答案:

没有答案