2016-11-08 10 views
3

こんにちは、こんにちは。私はインターネットに多くの方法があると思っています。そのほとんどは、push()update()save()のような古いバージョンのFirebaseに関するものです。だから私は本当にそれを更新する方法を知らない。私はこのようなことを試してみました:アレイを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); 
     } 

しかし、エラーは次のとおりです。

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

私の方法が正しいかどうかを教えてもらえますか?そしてこの機能を実装する方法。

+0

*インターネットにはさまざまな方法があります。*はい、ただし、Firebaseのマニュアルには1つの方法があります。最初にそれを読んでみてください。例えば、 'push'はあなたが望むように' key'を含むオブジェクトを返しません。それは**約束**を返し、約束の約束はあなたが使うことができる 'キー'フィールドを持っています。これらのことはすべて文書でよく説明されています。いつものように、あなたはただそれを読まなければなりません。 –

答えて

0

あなたは(プッシュを使用する必要はありませんので、あなたはIDを持っているようですが、のような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); 
    }); 
} 

あなたが本当にプッシュを(使用する場合)、firebaseあなたにIDを割り当てます。あなたのような空のpush()は、参照可能な参照を返していたことに注意してください。あなたはIDを前もって取得しても、まだ非同期的にイベントが行われています。

関連する問題