当push("number")
进入firebase时,使用angularfire2,数字不会直接附加,而是嵌套在生成的代码中。
内部Firebase实时数据库:
1)初始代码:
"myList": {
"0": {
"key1": "val1"
},
"1": {
"key2": "val2"
}
}
2).push({"key3": "val3"})
之后
"myList": {
"0": {
"key1": "val1"
},
"1": {
"key2": "val2"
},
"-generatedcode_": {
"key3": "val3"
}
}
为什么没有嵌套直接添加新对象?
答案 0 :(得分:6)
您所看到的是预期的行为。 AngularFire2 FirebaseListObservable
上的push
功能使用基础Firebase API push
,它会生成唯一的可排序密钥:
push()生成的唯一键按当前时间排序,因此生成的项目列表将按时间顺序排序。密钥也被设计为不可思议的(它们包含72个随机的熵)。
push
会生成一个唯一的密钥,以便多个用户可以安全地将数据推送到一个位置。如果这不是问题,并且您希望创建"2"
密钥,则可以执行此操作,但不能使用FirebaseListObservable
执行此操作。您可以使用基础Firebase API:
firebase.database().ref("/myList/2").set({ "key3": "val3" });
或者您可以使用AngularFire2 FirebaseObjectObservable
:
let o = af.database.object("/myList/2");
o.set({ "key3": "val3" });
af
是AngularFire
个实例。
执行set
之后,您应该会看到FirebaseListObservable
实例已更新,以包含新添加的数据。