繁体   English   中英

firestore时间戳查询不返回值

[英]firestore timestamp query not returning value

我正在尝试从 Firestore 中查询未来的游戏列表。

const gamesRef = db.collection("games");
gamesRef
  .where("kickoff", ">", 0)
  .get()
  .then((snap) => {
    console.log(snap);
  });

dbfirebase.firestore() ,如果我在没有查询的情况下调用它,它会正确返回数据。

在此处输入图像描述

我不确定这里有什么问题。 这是来自请求的 output:

在此处输入图像描述

首先,您一定误认为dbfirebase.database() 它应该是firebase.firestore() 它们是针对不同数据库系统的不同 API。 您在此处显示的是 Firestore,而不是实时数据库。

其次, snap是一个QuerySnapshot类型 object。 您的代码只是打印 QuerySnapshot object 的 JavaScript 默认字符串表示形式。 这对你根本没有用。 您将需要使用 QuerySnapshot API 来获取查询产生的文档的值,如文档中所示:

  .then((snap) => {
    snap.forEach(function(doc) {
      // doc.data() is never undefined for query doc snapshots
      console.log(doc.id, " => ", doc.data());
    });
  });

第三,我可以从您的 output 中看到结果集中没有文档( docs: Array[0] ),因此您的代码根本不会打印任何内容。 您的查询正在尝试将时间戳类型字段与 integer 进行比较。 这些不是可比较的字段值。 如果您有时间戳字段,则必须将其与另一个时间戳类型值进行比较。 您可以使用 JavaScript 对象或 Firestore Timestamp 对象:

const gamesRef = db.collection("games");
gamesRef
  .where("kickoff", ">", new Date())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM