【发布时间】:2018-03-02 18:36:29
【问题描述】:
对不起,这个神秘的标题。 我是 Firebase 数据库的新手。我将它与 AngularFire (ng4) 一起使用。 我正在一个关于种马(马)的网站上工作。每匹种马都有一个主人,一个主人可以拥有多匹种马。每匹种马还注册有一个或多个血统登记簿,一个血统登记簿有多个种马。 我现在有 3 个顶级节点:种马、所有者和 studbooks。
我有一个表格可以添加或编辑种马。此表格具有选择框,其中包含所有可能的所有者和所有可能的谱系。当我保存种马时,整个所有者节点和 studbook 节点都保存在种马节点中。这部分工作正常。
一个新页面将显示血统簿及其所有种马的详细信息。在这部分,我很挣扎。我读了很多书,我认为我需要一个连接节点 (studbook_stallions),我在其中放入了 studbook 密钥和属于该 studbook 一部分的所有种马密钥(或整个项目?)。到目前为止,我是对的?
添加种马时,我也可以在连接节点中添加一个条目,但是修改种马时呢?我是否首先需要检查种马是否已经在连接节点中?这不会影响性能吗?
这是我添加种马的方法:
addStallion(alias: string, formValues: Stallion): any {
formValues.updated = firebase.database["ServerValue"]["TIMESTAMP"];
return this.af.database.ref().child("stallions/" + alias).set(formValues);
}
这是我的更新种马方法:
updateStallion(alias: string, formValues: Stallion) {
formValues.updated = firebase.database["ServerValue"]["TIMESTAMP"];
this.af.object("stallions/" + alias).update(formValues);
}
如何更改这些方法以同时修改连接节点(studbook_stallions)?
还有一个类似的问题。我现在在我的种马节点中拥有整个所有者节点。更新所有者时如何更新此所有者节点? 这是我的更新所有者方法:
updateOwner(alias: string, formValues: Owner) {
formValues.updated = firebase.database["ServerValue"]["TIMESTAMP"];
this.af.object("stallions/" + alias).update(formValues);
// Also update in stallion node:
// ?????????????
}
[编辑]
这是我的种马节点:
这是我的所有者节点:
此时,种马节点拥有完整的所有者数据,但所有者节点还没有完整的种马数据。我很快就会改变。
我还没有为 studbook 建模,因为我不确定最好的工作流程是什么。我的血统书会有多匹种马。当我更新我的种马时,我还需要更新 studbook 节点中的相同种马。但是我怎么知道 studbook 节点中的哪匹种马呢?反过来也是一样。我更新了我的 studbook,现在我需要更新几个 Stallion 节点中的 studbook。
【问题讨论】:
标签: firebase firebase-realtime-database angularfire2 nosql