【问题标题】:Filtering timestamp query on firestore过滤firestore上的时间戳查询
【发布时间】:2019-02-20 17:00:12
【问题描述】:

我正在尝试从 ionic 中的 firebase 中过滤时间戳。我想做的是,我想过滤所有尚未超过今天日期的时间戳,即时间表。基本上,如果计划已经完成,我想从 Firestore 中检索它。如果它仍然安排,那么我不需要检索它。我的问题是我根本无法获得任何时间戳。 为此,我在构造函数中进行查询。在这里。

myDate: String = new Date().toISOString();



    constructor(public navCtrl: NavController, public formBuilder: FormBuilder) {
                let db = firebase.firestore();
                var auxint = 0;
                this.dataAux
                let auxString = '[';
                db.collection('Usuario').where("Deletado", "==", false).where('DataCriacao', '<', this.myDate).get().then(res => {
                  res.forEach(item => {

                    auxint++;
                    auxString += '{"id":"' + item.id + '","Usuario":' + JSON.stringify(item.data()) + '}';

                    if (res.size != auxint)
                      auxString += ', ';
                  })
                  auxString += ']';
                  this.dataJSON = JSON.parse(auxString);

                  console.log(this.dataJSON);
                }).catch(err => {
                  console.log('algum erro ' + err);
                });

        }

我如何显示 Firestore 数据

  <ion-item-sliding *ngFor="let data of dataJSON">
      <ion-item>
    <h3>DataCriacao: {{data?.DataCriacao}}</h3>
    <p>DataUpdate: {{data?.DataUpdate}}</p>
    <p>DELETADO: {{data?.Deletado}}</p>
    <p>EMAIL: {{data?.Usuario?.Documento?.email}}</p>
    <p>ID: {{data.Usuario.Documento?.id}}</p>
    <p>NOME: {{data.Usuario.Documento?.nome}}</p>
    <p>SENHA: {{data.Usuario.Documento?.senha}}</p>
    <p>TELEFONE: {{data?.Usuario?.Documento?.telefone}}</p>
      </ion-item>
      <ion-item-options>

【问题讨论】:

  • 您需要指出this.date 的确切含义,以及应该与您的查询匹配的一些文档的内容。
  • 我以为我实际上正在这样做,你能详细说明我应该怎么做吗?
  • 能否请您发布数据库结构和您的模型类。
  • 另外,另一个观察:imgur.com/a/eZZXnVL 我注意到我的屏幕打印出一个空的 [] 数组类型

标签: angular typescript ionic-framework google-cloud-firestore


【解决方案1】:

我注意到我的屏幕打印出一个空的 [] 数组类型。

这是因为您使用 > 比较字符串和时间戳数据。这不是一个有效的比较,因此没有从集合中检索文档,给您空数组。

相反,您必须保持两种数据类型相同。您应该仅以日期格式保留当前日期。并且从 Firestore 返回的时间戳也是日期格式。

myDate: String = new Date();

所以,现在您可以使用 where 查询来比较它们。

【讨论】:

  • 好的,但是之后我将如何查询和比较它们呢?因为我在使用 .then 之后立即处理返回函数
  • 您可以尝试使用>或 .. ..并且不要将日期转换为字符串..
  • 太棒了。干杯兄弟
猜你喜欢
  • 2020-07-10
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 1970-01-01
  • 2020-04-17
  • 2019-04-30
  • 1970-01-01
相关资源
最近更新 更多