【问题标题】:Pagination with firestore cursor using timestamp使用时间戳对 Firestore 游标进行分页
【发布时间】:2020-09-18 16:21:06
【问题描述】:

我正在尝试使用游标进行带时间戳的分页,但它在每次调用数据库时都返回相同的数据。

这样我把它保存在firestore中

const xDate = admin.firestore.Timestamp.now();

要使用光标,我会这样做

let consulta = db.collection('facebook_spa');
          consulta = consulta.select('xId');
          consulta = consulta.where('xEstate', '==', true);
          consulta= consulta.orderBy('xDate', 'desc');
          consulta= consulta.startAfter(xDate);

console.log() 中,它显示时间戳采用以下形式

{                                                                                                                                                                   10:59:40
  _seconds: 1600439396,
  _nanoseconds: 705000000
}

试试这个方法。这里我想按日期分页,因为我试过按id来做,但是需要按日期分组

let consulta = db.collection('facebook_spa');
              consulta = consulta.select('xId');
              consulta = consulta.where('xEstate', '==', true);
              consulta= consulta.orderBy('xDate', 'desc');
              consulta= consulta.orderBy('xId', 'desc');
              consulta= consulta.startAfter('', xId);

我想按日期降序显示数据的 ID,但使用光标分页,使用 xDate 或 xId 字段或两者(xDate 和 xId)。 xDate 与firestore“时间戳”一起保存,xId 是一个字段。换句话说,将所有最新的数据显示到最近的数据并进行分页。

这两种方式都无法正确完成分页

感谢您的帮助

【问题讨论】:

  • 您希望查询产生什么数据?请编辑问题以显示您正在使用的实际数据。
  • @DougStevenson 嗨。我想按日期降序显示数据的 ID,但使用光标分页,使用 xDate 或 xId 字段或两者(xDate 和 xId)。 xDate 与firestore“时间戳”一起保存,xId 是一个字段。换句话说,将所有最新的数据显示到最近的数据并进行分页。问候

标签: javascript node.js firebase google-cloud-firestore


【解决方案1】:

我也有同样的问题。 xDate 字段需要先转换为 Timestamp 对象。

所以使用这样的东西:

let consulta = db.collection('facebook_spa');
          consulta = consulta.select('xId');
          consulta = consulta.where('xEstate', '==', true);
          consulta= consulta.orderBy('xDate', 'desc');
          consulta= consulta.startAfter(new admin.firestore.Timestamp(xDate._seconds,xDate._nanoseconds));

这应该可以解决问题。

【讨论】:

  • xDate 已经是声明中的时间戳:const xDate = admin.firestore.Timestamp.now()now() 返回一个时间戳。
  • 非常感谢。这对我帮助很大。问候
猜你喜欢
  • 1970-01-01
  • 2020-12-20
  • 2020-10-11
  • 1970-01-01
  • 1970-01-01
  • 2021-11-28
  • 2018-11-17
  • 1970-01-01
相关资源
最近更新 更多