让我们让我的文档包含两个字段“ likeCount”和“ viewCount”。是否可以通过这两个字段的总和对其排序?
如果没有,如何按受欢迎程度实施订购?在许多应用中,按受欢迎程度排序是一项常见功能,但我找不到与此相关的任何文档或教程。
答案 0 :(得分:2)
一种解决方案是在每个文档中都有一个额外字段,用于保存总和的值。然后,您可以轻松地基于此值进行排序。
要更新此字段,如果您在更新文档时未在应用程序中获取信息(即文档),则可以在从应用程序中更新文档时或进行操作。需要获取文档以获取两个字段的值),您可以使用Cloud Function在后端更新值。
例如,遵循以下几行的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;
}
});