Angularfire2 - 直接将项目附加到列表

时间:2016-09-02 22:21:15

标签: json firebase firebase-realtime-database angularfire2

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"
    }
  }

为什么没有嵌套直接添加新对象?

1 个答案:

答案 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" });

afAngularFire个实例。

执行set之后,您应该会看到FirebaseListObservable实例已更新,以包含新添加的数据。