【发布时间】:2020-09-06 12:16:26
【问题描述】:
我希望我的用户能够更新 URL 上的 slug,如下所示:
url.co/username/projectname
我可以使用主键,但不幸的是 Firestore 不允许在设置后对分配的 uid 进行任何修改,因此我创建了一个唯一的 slug 字段。
结构示例:
projects: {
P10syfRWpT32fsceMKEm6X332Yt2: {
slug: "majestic-slug",
...
},
K41syfeMKEmpT72fcseMlEm6X337: {
slug: "beautiful-slug",
...
},
}
修改 slug 的一种方法是删除并复制新文档上的数据,这样做会变得复杂,因为我在文档中附加了子集合。
我知道我可以像这样通过文档键查询:
var doc = db.collection("projects");
var query = doc.where("slug", "==", "beautiful-slug").limit(1).get();
问题来了。
如果我的数据库中有超过 1000 个文档,这不是非常不切实际吗,每次我都必须调用一个项目 (url.co/username/projectname) 不会因为它必须查询而花费 +1000 次读取通过所有文件?如果是,正确的方法是什么?
【问题讨论】:
标签: database firebase google-cloud-firestore nosql