小编Car*_*lez的帖子

Firestore 说我在多个属性上有不等式过滤器,但我没有

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

firebase.firestore().collection('User')
.where(firebase.firestore.FieldPath.documentId(), '==', firebase.auth().currentUser.uid)
.where('updated_at', '>', updated_at)
.get()
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

谢谢

javascript firebase google-cloud-firestore

8
推荐指数
1
解决办法
3644
查看次数

Firestore 函数触发器算作读取吗?

我知道您可能在想什么,“为什么这很重要?不要为了优化定价而试图使其过于复杂”。就我而言,我需要这样做。

我在 Firestore 中有一个包含数百万条记录的集合,每个文档都会经常更新。每次更新时,我都需要进行一些数据清理(以及更多)。所以我有一个功能触发器onUpdate可以做到这一点。在函数中有两个参数:更新前的文档和更新后的文档。

我的问题是:

因为文档是作为参数传递的,这算作数据库读取吗?

firebase google-cloud-functions google-cloud-firestore

6
推荐指数
1
解决办法
648
查看次数