Javascript 如何将阵列更新到firebase?

Javascript 如何将阵列更新到firebase?,javascript,firebase,firebase-realtime-database,Javascript,Firebase,Firebase Realtime Database,我是这个领域的新手。我看到互联网上有很多方法,其中大部分都是关于Firebase的旧版本,比如使用push(),update(),save()。所以,我真的不知道如何更新它。我试过这样做: function writeNewEvent(eObj) { // A post entry. var userObj = authObj.$getAuth(); // Get a key for a new Post.

我是这个领域的新手。我看到互联网上有很多方法,其中大部分都是关于Firebase的旧版本,比如使用
push()
update()
save()
。所以,我真的不知道如何更新它。我试过这样做:

function writeNewEvent(eObj) {
          // A post entry.
            var userObj = authObj.$getAuth();

            // Get a key for a new Post.
            var newEventKey = ref.child('events').child(userObj.uid).push().key;

            // Write the new post's data simultaneously in the posts list and the user's post list.
            var updates = {};
            updates['/events/' + userObj.uid+ '/' + newEventKey] = userObj;

            return ref.update(updates);
        }
但错误在于:

angular.js:13920 Error: Firebase.update failed: First argument  contains an invalid key ($d) in property 'events.LRnkjDgEu1QtuvUTazTwyms4U063.-KW56c87MThrK0PZp-XH.f'.  Keys must be non-empty strings and can't contain ".", "#", "$", "/", "[", or "]"

你能告诉我我的方法是否正确吗?以及如何实现此功能。

看起来您有一个ID,因此不需要使用push(),只需在ID处设置(),如:

// assuming your input looks somthing like:
let eObj = {
  "uuid": "98765-8765-1234567890-7890",
  "some-data": "stuff",
  "other-data": "other stuff",
  "numeric-data": 12345
}

function writeNewEventUsingObjUuid(eObj) {
  // A post entry.
  var userObj = authObj.$getAuth();

  return ref.child('events').child(userObj.uid).set(eObj).then(function () {
    console.log('Event added with ID: ' + userObj.uid);
  }).catch(function (e) {
    console.log('Error adding event: ' + e.message);
  });
}
如果您确实想使用push(),firebase将为您分配一个ID。请注意,像您这样的空push()将返回一个thenable引用。尽管您预先获得了一个ID,但工作仍然是异步完成的

在互联网上有很多方法是的,但是在Firebase文档中有一种方法。试着先读一下。例如,
push
不会像您希望的那样返回包含
键的对象。它返回一个promise,promise的值有一个可以使用的
字段。所有这些都在文档中得到了很好的解释;像往常一样,你只需要阅读它。