Select 时间戳为今天的 Firebase firestore 集合

Select Firebase firestore collection where timestamp is today

大家好,

我有一个 firetore 文档集合,它们都有一个时间戳数据类型的 dateCreated 字段。我想 select 所有今天 dateCreated 所在的文档。我将如何实现这一目标。我试过下面没有成功

const ref = firestore.collection('orders').where('dateCreated','<',moment().toDate()).orderBy('dateCreated', 'desc');

上面一行从集合中获取所有订单,我想要今天创建的所有订单。希望这是有道理的

谢谢大家

如果您是相对于用户自己的时区而不是基于固定时区(例如,您在东海岸,但总部在西海岸),您可以使用:

// for numeric timestamp values (milliseconds since 1970-01-01 UTC)
const midnightThisMorning = (new Date()).setHours(0,0,0,0);

const ref = firestore.collection('orders')
  .where('dateCreated', '>', midnightThisMorning)
  .orderBy('dateCreated', 'desc');
// for firebase.firestore.Timestamp values
const startDate = new Date();
startDate.setHours(0,0,0,0);

const ref = firestore.collection('orders')
  .where('dateCreated', '>', startDate)
  .orderBy('dateCreated', 'desc');

如果您知道时间必须与特定时区相关,则需要改为根据该时区计算午夜。

// for numeric timestamp values (milliseconds since 1970-01-01 UTC)
const midnightInLA = moment()
  .tz("America/Los_Angeles")
  .startOf("day")
  .valueOf();

const ref = firestore.collection('orders')
  .where('dateCreated', '>', midnightInLA)
  .orderBy('dateCreated', 'desc');
// for firebase.firestore.Timestamp values
const dateMidnightInLA = moment()
  .tz("America/Los_Angeles")
  .startOf("day")
  .toDate();

const ref = firestore.collection('orders')
  .where('dateCreated', '>', dateMidnightInLA)
  .orderBy('dateCreated', 'desc');

注意: 使用 moment-timezone,如果您只使用 select 时区,您可以使用这些时区而不是所有时区的详细信息部署代码. the documentation.

中详细介绍了此过程