如何将数组更新到firebase?

时间:2016-11-08 22:49:06

标签: 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.
            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 "]"

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

1 个答案:

答案 0 :(得分:0)

看起来你有一个ID所以你不需要使用push(),只需在id上设置set():

// 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()会返回一个可引用的引用。尽管您事先获得了ID,但仍然会以异步方式完成工作。