【问题标题】:How to update array to firebase?如何将数组更新为 Firebase?
【发布时间】:2016-11-08 22:49:06
【问题描述】:

我是这个领域的新手。我看到互联网上有很多方法,其中大多数是关于旧版本的 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 "]"

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

【问题讨论】:

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

标签: javascript firebase firebase-realtime-database


【解决方案1】:

看起来你有一个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,但工作仍然是异步事件完成的。

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2020-10-28
    相关资源
    最近更新 更多