web-dev-qa-db-ja.com

FirebaseでPush()を使用する場合、一意のIDを取得してデータベースに保存する方法

Firebaseにデータをプッシュしていますが、データベースにも一意のIDを保存したいです。一意のIDを持つデータをプッシュする方法を教えてください。

私はこのようにしようとしています

  writeUserData() {
    var key= ref.Push().key();
    var newData={
        id: key,
        websiteName: this.webname.value,
        username: this.username.value,
        password : this.password.value,
        websiteLink : this.weblink.value
    }
    firebase.database().ref().Push(newData);
  }

エラーは「ReferenceError:ref is not defined」です

Refオブジェクトのkey()関数を使用してキーを取得できます

FirebaseのJavaScript SDKでPushを呼び出す方法は2つあります。

  1. Push(newObject)を使用します。これにより、新しいプッシュIDが生成され、そのIDを持つ場所にデータが書き込まれます。

  2. Push()を使用します。これにより、新しいプッシュIDが生成され、そのIDを持つ場所への参照が返されます。これは、純粋なクライアント側操作です

#2を知っていると、クライアント側で新しいPush idを簡単に取得できます:

var newKey = ref.Push().key();

その後、複数の場所の更新でこのキーを使用できます。

https://stackoverflow.com/a/36774761/2305342

引数なしでFirebase Push()メソッドを呼び出す場合、それは純粋なクライアント側の操作です。

var newRef = ref.Push(); // this does *not* call the server

次に、新しい参照のkey()をアイテムに追加できます。

var newItem = {
    name: 'anauleau'
    id: newRef.key()
};

そして、アイテムを新しい場所に書き込みます。

newRef.set(newItem);

https://stackoverflow.com/a/34437786/2305342

あなたの場合:

writeUserData() {
  var myRef = firebase.database().ref().Push();
  var key = myRef.key();

  var newData={
      id: key,
      Website_Name: this.web_name.value,
      Username: this.username.value,
      Password : this.password.value,
      website_link : this.web_link.value
   }

   myRef.Push(newData);

}
51
iOSGeek

Firebase v3データの保存

function writeNewPost(uid, username, picture, title, body) {
  // A post entry.
  var postData = {
    author: username,
    uid: uid,
    body: body,
    title: title,
    starCount: 0,
    authorPic: picture
  };

  // Get a key for a new Post.
  var newPostKey = firebase.database().ref().child('posts').Push().key;

  // Write the new post's data simultaneously in the posts list and the user's post list.
  var updates = {};
  updates['/posts/' + newPostKey] = postData;
  updates['/user-posts/' + uid + '/' + newPostKey] = postData;

  return firebase.database().ref().update(updates);
}
27
Ron Royston

このようなPromiseを使用して、最後に挿入されたアイテムIDを取得できます

let postRef = firebase.database().ref('/post');
postRef.Push({ 'name': 'Test Value' })
    .then(res => {
        console.log(res.getKey()) // this will return you ID
    })
    .catch(error => console.log(error));
4
Azam Alvi

.Push()は常にObservableを返します。上記のソリューションを適用すると、「タイプ 'String'には互換性のあるコール署名がありません」というエラーが発生しました。

そうは言っても、私はこの新しいバージョンで私のケースで何が機能したかを参照します:

タイプ 'String'には互換性のあるコール署名がありません

0

これは私のために働いた:

 var insertData = firebase.database().ref().Push(newData);
 var insertedKey = insertData.getKey(); // last inserted key

こちらをご覧ください: firebaseでデータを保存します。

0
Manohar Khadka