抱歉这个神秘的标题。 我是Firebase db的新手。我在AngularFire(ng4)中使用它。 我正在一个关于种马(马)的网站上工作。每匹种马都有一个主人,一个主人可以有多个种马。每匹种马也在一本或多本书中注册,而且一本种马有多种种马。 我现在有3个顶级节点:种马,所有者和牧师。
我有一个表格来添加或编辑种马。此表单包含所有可能所有者和所有可能的教科书的选择框。当我保存种马时,整个所有者节点和studbook节点被保存在种马节点中。这部分工作正常。
新页面将显示该书及其所有种马的详细信息。在这一部分,我挣扎着。我已经阅读了很多内容,我认为我需要一个连接节点(studbook_stallions),其中我放入了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。
答案 0 :(得分:0)
在这里发布您的数据库结构将有助于可视化您的数据库,但我认为您在这里寻找的是同时更新多个子节点,这就是您的方法:
var childUpdates = [];
childUpdates[ '/stallions/' + yourStallionID ] = someDataHere;
childUpdates[ '/stallionOwners/stallions/' + yourStallionID ] = someOtherDataHere;
firebase.database().ref().update(childUdates);
这将确保两个子节点同时更新。