2016-11-08 4 views
3

Ich bin neu in diesem Bereich. Ich sehe, es gibt viele Möglichkeiten im Internet und die meisten von ihnen ist über die alte Version von Firebase, wie mit push(), update(), save(). Also, ich weiß wirklich nicht, wie ich es aktualisieren soll. Ich habe versucht, das wie folgt aus:Wie aktualisiert man das Array zu Firebase?

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); 
     } 

Aber der Fehler ist:

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

Können Sie mir sagen, ob meine Methode ist richtig? Und wie man diese Funktion implementiert.

+0

* Es gibt viele Möglichkeiten im Internet * Ja, aber es gibt einen Weg in der Firebase-Dokumentation. Versuchen Sie, das zuerst zu lesen. Zum Beispiel wird 'push' kein Objekt zurückgeben, das die' Taste' enthält, wie Sie anscheinend hoffen. Es gibt ein ** Versprechen ** zurück, und der Wert des Versprechens des Versprechens hat ein Schlüsselfeld, das Sie verwenden können. All das wird in den Dokumenten gut erklärt; Wie immer musst du es nur lesen. –

Antwort

0

Es sieht aus wie Sie eine ID haben, so müssen Sie Push nicht verwenden(), nur gesetzt() an der ID wie:

// 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); 
    }); 
} 

Wenn Sie wirklich Push verwenden möchten(), Feuerbasis weist dir eine ID zu. Beachten Sie, dass ein leerer Push(), wie Sie ihn hatten, eine Referenz liefert. Die Arbeit wird immer noch asynchron erledigt, obwohl Sie eine ID im Voraus erhalten.

Verwandte Themen