我正在尝试使用某些条件从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);
}
});
我期望一个数组,其中包含上周完成的模块对象和用户ID。
加是否可以获取相同的数据但有一定的日期范围?
谢谢