새 데이터를 Firebase 데이터베이스에 푸시할 때 사용자 지정 키 설정
글쎄요, 저는 Firebase가 처음이라 새로운 데이터를 데이터베이스에 푸시하는 동안 제 키를 가지고 싶습니다.
문제:
FireBase.push().setValue(mapped_values);
이는 다음과 같은 구조를 제공합니다.
사용자 지정 키를 생성하려면 어떻게 해야 합니까?사용자 이름 같은 것.
부르기push()
키를 생성합니다.
대신 사용하는 경우child()
키/경로를 직접 결정할 수 있습니다.
ref.child("Victor").setValue("setting custom key when pushing new data to firebase database");
String key="1234567sdfsf8";
//custom object
User user=new User();
DatabaseReference mDatabase;
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("Users").child(key).setValue(user);
상위 답변에 대한 업데이트로 Firebase API가 변경되었으며,setValue()
더 이상 작동하지 않습니다.이제 사용해야 합니다.set()
대신 기능:
ref.child("Victor").set("setting custom key when pushing new data to firebase database");
루트에 많은 자식이 포함되어 있더라도 setValue()를 사용하여 사용자 지정 키를 생성할 수 있습니다. 예를 들어 'Users'가 루트이고 키로 이메일을 사용하여 사용자를 추가하려는 경우 다음과 같습니다.
firebase.child("firebase url").child("Users").child("user_1 email").setValue(...)
firebase.child("firebase url").child("Users").child("user_2 email").setValue(...)
기타
당신의 DB가 다음과 같다고 가정해 보겠습니다.
"BookShelf" : {
"book1" : {
"bookName" : "book1_push"
...
}
당신의 코드는 (push, push, random 키를 사용하지 않음)
DatabaseReference mDatabase = FirebaseDatabase.getInstance().getReference();
Book data = new Book();
mDatabase.child("BookShelf").child("book1").setValue(data);
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
POST 요청에서는 ID를 생성하지만 PATCH 요청에서는 PUT 요청에서 사용자가 제공할 키를 언급합니다.
그냥 지식을 공유하기 위해서입니다.
방화벽을 사용하는 경우 다음과 같이 사용자 지정 키를 만들 수 있습니다.
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
데이터베이스 참조 자식이 고정 문자열이면 새 값이 추가되지 않습니다.이전 값을 업데이트합니다.예:
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() 방법은 정확히 같은 것을 합니다.임의의 키를 생성하여 고유한 참조를 유지합니다.
Node.js를 사용하여 Firebase Realtime Database에 쓰는 경우 다음과 같은 기능이 있습니다.
function registerVibinScores( reference, childId, dataToWrite){
var ref = db.ref(reference); //vibinScores
usersRef = ref.child(childId);
usersRef.set(
dataToWrite
);
}
//Example to invoke it:
var vibinEntry = {
"viberId": "425904090208534528",
"person": {
"name": "kukur",
"score": 0,
"id": "425904090208534528"
},
"vibinScore": 0,
"timeOfEntry": "2021-04-19T16:59:23.077Z"
}
registerVibinScores('vibinScores/allEntries', 112, vibinEntry);
간편하고 빠른 속도
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);
언급URL : https://stackoverflow.com/questions/37483406/setting-custom-key-when-pushing-new-data-to-firebase-database
'programing' 카테고리의 다른 글
Vuex 스토어 상태가 업데이트되지 않음 화면 / Vue-Native (0) | 2023.06.14 |
---|---|
간단한 (아마도 가장 간단한) C 컴파일러를 시작하는 것입니까? (0) | 2023.06.14 |
모든 SDK 라이센스 자동 수락 (0) | 2023.06.14 |
Oracle이 연산자와 같지 않음 (0) | 2023.06.14 |
오라클에서 글로벌 임시 테이블을 피하는 방법 (0) | 2023.06.14 |