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

Angularfire2 - append item directly to list

当我 push("number") 使用 angularfire2 进入 firebase 时,数字没有直接附加,而是嵌套在生成的代码中。

Firebase 实时数据库内部:

1)初始代码:

  "myList": {
    "0": {
      "key1": "val1"
    },
    "1": {
      "key2": "val2"
    }
  }

2) .push({"key3": "val3"})

之后
  "myList": {
    "0": {
      "key1": "val1"
    },
    "1": {
      "key2": "val2"
    },
    "-generatedcode_": {
      "key3": "val3"
    }
  }

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

您看到的是预期的行为。 push function on AngularFire2's FirebaseListObservable uses the underlying Firebase API's push,它生成一个唯一的、可排序的键:

The unique key generated by push() are ordered by the current time, so the resulting list of items will be chronologically sorted. The keys are also designed to be unguessable (they contain 72 random bits of entropy).

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 实例已更新以包含新添加的数据。