2017-09-01 8 views
0

私のアプリケーションでは、新しいジョブを作成し、それを自分のUIDで登録することができます。プッシュされたオブジェクトにプッシュキーを効率的に追加する方法。 - Firebase

.then(snapshot => { 
    let myPushKey = snapshot.key; 
    // do more stuff here 
} 

しかし、それは店に私のアプリで重要である:私は約束が解決した後、あなたがそうのようなsnapshot.keyとして格納されたプッシュキーを持つスナップショットオブジェクトを取得することを知っている

let newJobRef = firebase.database().ref(`/jobs/serviceUsers/activeJobs/${currentUser.uid}`); 
newJobRef.push(job) 

このキーはJobオブジェクト内にあります。だから私は二回目の往復をして、プッシュされたジョブを更新して最近プッシュされたジョブを更新しなければなりません。

私の質問です:これは正しい方法ですか?一方向の移動でプッシュキーをオブジェクトに追加する方法はありますか? (クラウド機能は含まない)。私は、データベースにヒットしたときにこれを自動的に行うような、いくつかの予約されたfirebase-syntaxや単語を望んでいましたが、何も見つかりませんでした。

ありがとうございます!

答えて

2

これは、あなたがpush()も値なしで呼び出すことができることを実現一度行うことは簡単です:

let userRef = firebase.database().ref(`/jobs/serviceUsers/activeJobs/${currentUser.uid}`); 
let newJobRef = userRef.push(); 
job.key = newJobRef.key; 
newJobRef.set(job); 

push()への呼び出しは、純粋なクライアント側の呼び出しは、それだけでユニークなIDを持つリファレンスを生成しています。 set()への呼び出しは、値をデータベースにここに書き込むものです。

オブジェクトのキーをそのオブジェクトの内部に格納することは、一種の反パターンであることに注意してください。プログラム内でキーと値の両方を取得する必要がある場合もありますが、通常はスナップショットを渡します(既に.key.val())。または、データベース自体ではなく読み込み時にオブジェクトにキーを注入します)。

+0

私は何度も私を助けてくれてありがとう、ありがとう:)もう1つの質問をフォローします。オブジェクトそのものに一意のIDを持たずにあなたがどのように渡したのか、私は静かではありませんでしたか? DBから読み込むときにUIDを挿入するにはどうすればよいですか? –

関連する問題