gpt4 book ai didi

javascript - Firestore 说我在多个属性上有不平等过滤器,而我没有

转载 作者:行者123 更新时间:2023-11-30 06:14:46 24 4
gpt4 key购买 nike

我正在尝试做一个“小技巧”来避免每次加载页面时都读取用户文档。所以我将它保存在本地,每次加载页面时我都会得到本地版本,得到 updated_at属性(property),然后做类似 WHERE last_updated > {{updated_at}} 的事情.为此,我想使用这个:

firebase.firestore().collection('User')
.where(firebase.firestore.FieldPath.documentId(), '==', firebase.auth().currentUser.uid)
.where('updated_at', '>', updated_at)
.get()

如您所见,我有一个等式 ( == ) 和一个不等式 ( > )。为什么我会在控制台上收到以下错误:

FirebaseError: Cannot have inequality filters on multiple properties: updated_at
at new t (https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:47054)
at t.fromRpcStatus (https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:116660)
at t.fromWatchChange (https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:125914)
at t.onMessage (https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:242411)
at https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:241212
at https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:241997
at https://www.gstatic.com/firebasejs/6.0.2/firebase-firestore.js:1:144869

我这样做是为了避免在本地版本与数据库中的版本相同时从数据库中读取数据。如果您有更好的方法,请告诉我。

谢谢

最佳答案

这里是 firebaser

您对 documentId() 进行的相等性检查在内部由 Firestore 转换为范围检查,因为键存储为现有索引中的最后一项(如果我理解正确的话)。这意味着您要在服务器端尝试执行两个不等式/范围检查,这是不允许的。

所以您看到的行为是正确的。但这绝对不直观,错误消息也没有帮助。我们将通过检测这种组合来寻找改进错误消息的方法。

关于javascript - Firestore 说我在多个属性上有不平等过滤器,而我没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56805927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com