【问题标题】:Sorting a Firebase Query by timestamp seems to return 0 results [go programming language]按时间戳对 Firebase 查询进行排序似乎返回 0 个结果 [去编程语言]
【发布时间】:2019-02-18 14:51:56
【问题描述】:

问题概述:
我正在查询带有 UserID == 字符串的会话的“会话”集合,这很好用。但是当我尝试使用时间戳类型的 OrderBy("DateCreated", Desc) 时,我得到 0 个结果

我的尝试:
我检查了数据库和我正在使用的名为“DateCreated”的属性,它是一个有效的时间戳类型。所有会话数据都是在随机日期范围内生成的。

当前结果:
返回 100 个结果(正确)
firstSessionQuery := db.Collection("Sessions").Where("UserID", "==", uid).Documents(ctx)

返回 0 个结果 VS 100(不正确)
firstSessionQuery := db.Collection("Sessions").Where("UserID", "==", uid).OrderBy("DateCreated", firestore.Asc).Documents(ctx)

firstSessionQuery := db.Collection("Sessions").Where("UserID", "==", uid)
allDocs, err := firstSessionQuery.Documents(ctx).GetAll()

docsSorted := firstSessionQuery.OrderBy("DateCreated", firestore.Asc).Documents(ctx)
allDocsSorted, err := docsSorted.GetAll()
fmt.Printf("docs len: %v, docs sorted len: %v\n", len(allDocs), len(allDocsSorted))

第一个 %v 返回 100,第二个 %v 返回 0

预期结果:
我的预期结果是按日期升序或降序排序的 100 个会话。

这里是数据库截图:
here is the DateCreated prop

Here is the UserID prop

Terminal fmt printout

【问题讨论】:

  • 请将您的数据库结构添加为截图。

标签: go google-cloud-firestore


【解决方案1】:

在类似的情况下对我有用

db.collection("Sessions")
            .orderBy("DateCreated", Query.Direction.ASCENDING)

【讨论】:

  • 是的,这应该是微不足道的,所以我一定遗漏了一些明显的东西。
  • 我的 OrderBy 使用了一个不太复杂的“数字”类型,但仍然得到 0 个结果,所以 Go firebase 库中有一个主要错误(不太可能)或者我遗漏了一些东西(更多可能)。我查看了文档,看不出我做错了什么:cloud.google.com/firestore/docs/query-data/order-limit-data
【解决方案2】:

这是用户错误

我将数据映射到自定义 type Session struct{} 并且其中一个 props 设置为 int 而它应该是 string强>,我没有发现错误。

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 2011-09-28
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 2015-11-01
    相关资源
    最近更新 更多