德茜:如何按日期查询



我正在尝试构建一个"日志";表(我的目标是知道应用程序被使用了多长时间(,所以我创建了一个功能来检测用户在一段时间后是否处于非活动状态。

表格如下:

dblogs.version(1).stores({
aLogs: "++id, story_id, user_id, session_start, session_end, words_written"
});

因此,当用户处于活动状态时,我会在aLogs上创建一个新记录,例如:

0, 1 , 19 , 2021/06/30 10:15:10

用户192021/06/30 10:15:10开始打字(进入session_start(,然后如果用户不活动,我将当前日期时间添加到session_end

示例:

0, 1 , 19 , 2021/06/30 10:15:10, 2021/06/30 12:15:48

所以基本上,用户估计的时间是这两个日期之间的差异(在这种情况下是2小时0米38秒(

我的目标是有几个这样的日志,然后在上面运行一个循环,并记录用户花费的秒数;今天";

我该如何查询Dexie?

我尝试过await dblogs.aLogs.get({session_start : "2021/06/30"});,但它返回未定义的

您可能应该有以下索引:

[user_id+story_id+session_start]

这将允许高效的查询检索给定用户、故事和日期的所有日志条目:

const result = await dblogs.aLogs
.where('[user_id+story_id+session_start]')
.between (
[userId, storyId, dayStart],
[userId, storyId, dayEnd])
.toArray();
const totalSpentToday = results.reduce(
(sum, {session_start, session_end}) =>
sum + Math.min(dayEnd, session_end) - session_start);

如果您需要捕捉昨天和当前日期之间重叠的会话,您可以考虑将dayStart(在between子句中(调整为dayStart之前的合理小时数,然后根据结果忽略(减去(不在当前日期内的持续时间。

在此处阅读有关复合索引的更多信息:https://dexie.org/docs/Compound-Index

最新更新