【发布时间】:2022-12-09 01:51:04
【问题描述】:
目前我每周都会在 FaunaDB 中存储一些数据。这是使用 cronjob 完成的。在我的代码中,我试图获取最近两周的文档。我想使用时间戳来这样做。
要获取的文件之一:
{
"ref": Ref(Collection("weeklyContributors"), "350395411XXXXXXXX"),
"ts": 1670421954340000,
"data": {
...allMyDataFields
}
}
我的代码
const now = Date.now() * 1000;
const twoWeeksAgo = (Date.now() - 12096e5) * 1000;
console.log(now); //returns 1670493608804000
console.log(twoWeeksAgo); // returns 1669284008804000
// the stored document has a timestamp of 1670421954340000, so this should be in between [now] and [twoWeeksAgo]
await client.query(
q.Paginate(
q.Range(
q.Match(q.Index("get_weekly_list_by_ts")),
twoWeeksAgo,
now
)
)
);
This is a screenshot of the index I created in Fauna
上面的代码应该获取时间戳在now 和twoWeeksAgo 之间的所有文档,但它返回一个空数组(因此没有文档匹配查询)。上面的代码不会产生任何错误,它会返回状态代码 200,因此语法应该没问题。为什么我无法获取我在此示例中提供的文档?
更新
找到索引的解决方案。索引应该过滤Values,而不是Terms。输入 TS 和 Ref 返回文档。但是现在我不知道如何获得相应的文件。
这将返回一个错误
await client.query(
q.Map(
q.Paginate(
q.Range(
q.Match(q.Index("get_weekly_list_by_ts")),
twoWeeksAgo,
now
)
),
q.Lambda((x) => q.Get(x))
)
);
【问题讨论】:
标签: javascript faunadb