Firebase 如何确定NoSQL数据结构(更多或更少的集合)
我正在与firebase firestore合作创建一个原型web应用程序。我的目标是有两个不同的视图,未处理和正在处理。用户将与站点相关联,当他们登录时,他们将只看到与其站点相关联的详细信息。方法1,创建以下集合:Firebase 如何确定NoSQL数据结构(更多或更少的集合),firebase,google-cloud-firestore,nosql,Firebase,Google Cloud Firestore,Nosql,我正在与firebase firestore合作创建一个原型web应用程序。我的目标是有两个不同的视图,未处理和正在处理。用户将与站点相关联,当他们登录时,他们将只看到与其站点相关联的详细信息。方法1,创建以下集合: 地点 站点1已处理 站点1未处理 Site2已处理 站点2未处理 当有人从未处理的Site1中选取详细信息时,它会将其移动到Site1已处理 第二种方法是最小化集合并使用文档属性,从而生成以下集合: 地点 细节 每个详细信息文档都有一个名为site and status的属
- 地点
- 站点1已处理
- 站点1未处理
- Site2已处理
- 站点2未处理
- 地点
- 细节
哪些因素会影响这些结构中哪一个更合适?我选择使用两个集合,因为查询的功能远比我在提问时理解的强大 我使用此代码获取详细信息:
this.unprocessed = this.firestore.getDetails(this.selectedSite.Name, 'Unprocessed').onSnapshot((snapshot) => {
snapshot.docChanges().forEach(change => {
switch (change.type) {
case 'added':
this.unprocessedDetails.push(Object.assign(change.doc.data(), { id: change.doc.id }));
break;
case 'modified':
this.updateDetail(this.unprocessedDetails, change.doc.data(), change.doc.id);
break;
case 'removed':
this.unprocessedDetails = this.unprocessedDetails.filter(x => x.id !== change.doc.id);
}
});
});
如果更新了详细信息且状态不再为未处理状态,则会触发docChanges并删除该详细信息。如果文档的详细编号发生更改,则会触发docChanges并更新详细信息
以这种方式组织的优点是,更容易找到您要查找的内容(无需搜索多个集合)。我选择使用两个集合,因为查询的功能远远超过我在提问时理解的功能 我使用此代码获取详细信息:
this.unprocessed = this.firestore.getDetails(this.selectedSite.Name, 'Unprocessed').onSnapshot((snapshot) => {
snapshot.docChanges().forEach(change => {
switch (change.type) {
case 'added':
this.unprocessedDetails.push(Object.assign(change.doc.data(), { id: change.doc.id }));
break;
case 'modified':
this.updateDetail(this.unprocessedDetails, change.doc.data(), change.doc.id);
break;
case 'removed':
this.unprocessedDetails = this.unprocessedDetails.filter(x => x.id !== change.doc.id);
}
});
});
如果更新了详细信息且状态不再为未处理状态,则会触发docChanges并删除该详细信息。如果文档的详细编号发生更改,则会触发docChanges并更新详细信息
以这种方式组织的好处是更容易找到您想要的内容(无需搜索多个收藏)。这听起来像是我的偏好,除非您能够提出进一步的用例,从而无法使用其中一个或另一个选项。我们真的无法为您提供这些用例。NoSQL数据建模的底线是,您的建模应该支持您打算执行的查询。有时,为了支持所有必需的查询,您会复制数据库中的数据。这听起来像是我的偏好,除非您能够提出进一步的用例,从而无法使用其中一个选项。我们真的无法为您提供这些用例。NoSQL数据建模的底线是,您的建模应该支持您打算执行的查询。有时,为了支持所有必需的查询,您会复制数据库中的数据。