首页 > 解决方案 > 在时间戳字段上查询 Firestore 数据库

问题描述

我对firestore(和编程)比较陌生,无法在线找到我的问题的解决方案。

希望查询现有集合中的文档。这些文档都有一个时间戳字段。

当我现在尝试查询所有文档“>”或“<”时,查询工作正常。当我在 7 天前尝试查询“>”或“<”时,查询没有返回任何内容。我敢肯定,我可能只是错过了一些小东西。谢谢你的帮助!

这些按预期返回文件:

var today = new Date();
db.collection("****").where('display', '==', true).where('createdAt', '>', today).get().then(function(querySnapshot) {

var today = new Date();
db.collection("****").where('display', '==', true).where('createdAt', '<', today).get().then(function(querySnapshot) {

这些不返回任何东西:

var today = new Date()-604800000;
db.collection("****").where('display', '==', true).where('createdAt', '>', today).get().then(function(querySnapshot) {

var today = new Date();
db.collection("****").where('display', '==', true).where('createdAt', '>', today-604800000).get().then(function(querySnapshot) {

只是为了它

var today = new Date()-1;
db.collection("****").where('display', '==', true).where('createdAt', '>', today).get().then(function(querySnapshot) {

我看到其他人要求查看 Firestore 中该字段的外观,所以这是一张图片: 抱歉,这是一个链接

请让我知道是否还有其他可能有用的信息。谢谢!

编辑以显示下一次尝试:

var config = {****};
firebase.initializeApp(config);

const db = firebase.firestore();
const settings = {/* your settings... */ timestampsInSnapshots: true};
db.settings(settings);

var today = new Date();
var yesterday = date.setDate(today.getDate() - 1);
db.collection("****")
    .where('display', '==', true)
    .where('createdAt', '>', yesterday)
    .get()
    .then(function(querySnapshot) {console.log(createdAt)});

标签: firebasegoogle-cloud-firestore

解决方案


好的。所以我从一位非常有帮助的谷歌开发者那里得到了一些帮助。

这最终奏效了。

var beginningDate = Date.now() - 604800000;
var beginningDateObject = new Date(beginningDate);

db.collection("****")
    .where('display', '==', true)
    .where('createdAt', '>', beginningDateObject)
    .get()
    .then(function(querySnapshot) {console.log(/* ... */)});

推荐阅读