firebase 如何在Firestore中按多个计算值查询订单文档?

s6fujrry  于 2023-04-07  发布在  其他
关注(0)|答案(1)|浏览(177)

让我们有两个包含'likeCount'和'viewCount'字段的文档。是否可以按这两个字段的总和对它们进行排序?
如果没有,我如何实现按受欢迎程度排序?按受欢迎程度排序是各种应用程序中的常见功能,但我找不到任何文档或教程。

dwbf0jvd

dwbf0jvd1#

一个解决方案是在每个文档中有一个额外的字段来保存总和的值。然后你可以很容易地根据这个值进行排序。
要更新此字段,您可以在从应用程序更新文档时执行此操作,或者,如果在更新文档时应用程序中没有信息(即需要获取文档以获取两个字段的值),则可以在后端使用Cloud Function更新值。
例如,沿着以下行的云函数可以做到这一点:

exports.updateGlobalCount = functions.firestore
    .document('collection/{docId}')
    .onUpdate((change, context) => {

        const previousValue = change.before.data();
        const newValue = change.after.data();

        if (previousValue.likeCount !== newValue.likeCount || previousValue.viewCount !== newValue.viewCount) {     
            return change.after.ref.update({ globalCount: newValue.likeCount + newValue.viewCount })
        } else {
            return null;
        }
    });

相关问题