让我们有两个包含'likeCount'和'viewCount'字段的文档。是否可以按这两个字段的总和对它们进行排序?如果没有,我如何实现按受欢迎程度排序?按受欢迎程度排序是各种应用程序中的常见功能,但我找不到任何文档或教程。
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; } });
1条答案
按热度按时间dwbf0jvd1#
一个解决方案是在每个文档中有一个额外的字段来保存总和的值。然后你可以很容易地根据这个值进行排序。
要更新此字段,您可以在从应用程序更新文档时执行此操作,或者,如果在更新文档时应用程序中没有信息(即需要获取文档以获取两个字段的值),则可以在后端使用Cloud Function更新值。
例如,沿着以下行的云函数可以做到这一点: