web-dev-qa-db-ja.com

Firebaseデータベースに新しいデータをプッシュするときにカスタムキーを設定する

さて、私はFirebaseを初めて使用するので、新しいデータをデータベースにプッシュするときに独自のキーを持ちたいと思っています。

問題:

FireBase.Push().setValue(mapped_values);

これにより、次のような構造が得られます。

 database output

そこで独自のカスタムキーを作成するにはどうすればよいですか?ユーザー名など。

35

Push()を呼び出すと、キーが生成されます。

代わりにchild()を使用する場合、キー/パスを自分で決定できます。

ref.child("Victor").setValue("setting custom key when pushing new data to firebase database");
120
        String key="1234567sdfsf8";
        //custom object
        User user=new User();
        DatabaseReference mDatabase;
        mDatabase = FirebaseDatabase.getInstance().getReference();
        mDatabase.child("Users").child(key).setValue(user);
4
iqbal lone

ルートに多くの子が含まれている場合でもsetValue()を使用してカスタムキーを作成できます。たとえば、 'Users'がルートで、メールとしてユーザーをキーとして追加する場合は次のようになります。

firebase.child("firebase url").child("Users").child("user_1 email").setValue(...)

firebase.child("firebase url").child("Users").child("user_2 email").setValue(...)

お役に立てれば。

2
W2hkZ

FirebaseUI を使用している場合:

private static final CollectionReference usersCollection = FirebaseFirestore.getInstance().collection("users");

User user = new User("MyUsername", "MyPictureUrl");
String userKey = "1234567sdfsf8";

usersCollection.document(userKey).set(user); //MAGIC LINE
0
Phil

POSTリクエストではIDが生成されますが、PATCHでは、PUTリクエストで提供されるキーが示されます。

0
pramod singh

データベース参照の子が固定文字列の場合、新しい値は追加されません。前の値が更新されるだけです。例えば ​​:

DatabaseReference myRef = FirebaseDatabase.getInstance().getReference(); String mText = // get data from editText or set your own custom data

今、このようなデータを挿入すると:

myRef.child("abc").child("cba").setValue(mText);

データを挿入するたびに、以前のデータが更新されます。新しいデータは追加されません。私の参照はここで修正されるため(myRef.child("abc").child("cba") //これは常に修正されます)。

ここで、子「cba」の値を、修正されないランダムな値または動的な値に変更します。例えば:

Random Rand = new Random(); // Obtain a number between [0 - 49]. int n = Rand.nextInt(50); myRef.child("abc").child(String.valueOf(n)).setValue(mText);

この場合、更新する代わりに新しい値が追加されます。この時間参照はここでは固定されていないためです。それは動的です。 Push()メソッドはまったく同じことを行います。ランダムなキーを生成して一意の参照を維持します。

0
Arafat

知識を共有するためだけに。

ファイアシャープを使用している場合は、次のようにカスタムキーを作成できます

            IFirebaseConfig config = new FirebaseConfig
            {
                AuthSecret = "SecretKey",
                BasePath = "https://abc.firebaseio.com/",
                Host = "abc.firebaseio.com/"
            };
            IFirebaseClient client = new FirebaseClient(config);

            var obj = new Users
            {
                FirstName = "test",
                MiddleName = "user",
                LastName = "xyz"

            };

            SetResponse response = client.SetAsync("Profile", "YourID");//you can use Set() as well
            response = client.SetAsync("Profile/YourID", obj);//you can use Set() as well
0
Talha

シンプルで速い

 Map<String,Object> taskMap = new HashMap<>();
       taskMap.put("Name", name.getText().toString());
       taskMap.put("km", km.getText().toString());
      // taskMap.put("age", "45");
       taskMap.put("Day", day.getText().toString());
       mDatabaseReference.Push().setValue(taskMap);
0
Tarsbir Singh