사용자 정의 ID를 가진 문서를 Firestore에 추가하는 방법
파이어스토어 엔진에서 생성한 ID가 아닌 커스텀 생성된 ID로 파이어스토어 컬렉션에 문서를 추가할 수 있습니까?
사용해야 하는 사용자 정의 ID를 사용하려면.set
,보다는.add
ID가 "LA"인 문서가 생성됩니다.
db.collection("cities").doc("LA").set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
이것은 여기 공식 문서에서 가져온 것입니다.
각화를 사용하는 경우,
class Component{
constructor(private afs: AngularFireStore) {} // imported from @angular/fire/firestore
addItem() {
this.afs.collection('[your collection]').doc('[your ID]').set({your: "document"});
}
}
버전 9를 찾는 사람이 있다면 여기에 두겠습니다.
이것은 문서에서 가져온 것입니다.
import { doc, setDoc } from "firebase/firestore";
// Add a new document in collection "cities" with "LA" as id
await setDoc(doc(db, "cities", "LA"), {
name: "Los Angeles",
state: "CA",
country: "USA"
});
어디에db
다음과 같습니다.
const firebaseApp = initializeApp(firebaseConfig)
const db = getFirestore(firebaseApp)
Firestore로 푸시하기 전에 클라이언트가 문서에 대해 임의의 ID를 생성하기를 원하는 경우(동일하다고 가정) 허용된 답변을 확장하기 위해createId()
AngularFire2) 외부에 함수가 존재합니다.
const newId = db.createId();
db.collection("cities").doc(newId).set({
name: "Los Angeles",
state: "CA",
country: "USA"
})
이것은 Firestore가 저장하기 전에도 ID를 다른 문서의 참조 필드로 설정하는 데 유용합니다.저장된 개체를 바로 사용할 필요가 없는 경우 ID를 기다리지 않고 처리 속도를 높입니다.그set()
이제 Angular에서 사용할 수 있는 파이프에서 호출이 비동기화되었습니다.
게시하지 않은 알림id: newId
Firestore는 기본적으로 ID를 문서의 필드로 저장하지 않기 때문에 설정된 오브젝트에서
이런 식으로 할 수 있습니다.
// Inject AngularFirestore as dependency
private angularFireStore: AngularFirestore // from from 'angularfire2/firestore'
// set user object to be added into the document
let user = {
id: this.angularFireStore.createId(),
name: 'new user'
...
}
// Then, finally add the created object to the firebase document
angularFireStore.collection('users').doc(user.id).set(user);
db.collection("users").document(mAuth.getUid().set(user)
여기서 컬렉션의 이름은"users"
문서 이름은 사용자의 이름입니다.UID
여기서 사용해야 합니다.set
것은 아니다.add
private void storeData(String name, String email, String phone) {
// Create a new user with a first and last name
Map<String, Object> user = new HashMap<>();
user.put("name", name);
user.put("email", email);
user.put("phone", phone);
// Add a new document with a generated ID
db.collection("users").document(mAuth.getUid()).set(user)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Toasty.success(context,"Register sucess",Toast.LENGTH_SHORT).show();
}
});
}
이것은 데이터로 문서를 작성하는 기능으로, 사용자가 직접 생성할지 자동 생성할지 선택할 수 있습니다.함수 호출 중에 id가 제공되면 생성될 문서에는 사용자가 제공한 id가 포함됩니다.
모듈식 Firebase Firestore 9.+
import { getFirestore, serverTimestamp, collection, doc, setDoc, addDoc } from 'firebase/firestore/lite'
async create(id = null, data) {
const collectionRef = collection(getFirestore(), this.collectionPath)
const dataToCreate = {
...data,
createTimestamp: serverTimestamp(),
updateTimestamp: serverTimestamp()
}
const createPromise =
id === null || id === undefined
? // Create doc with generated id
await addDoc(collectionRef, dataToCreate).then(d => d.id)
: // Create doc with custom id
await setDoc(doc(collectionRef, id), dataToCreate).then(() => id)
const docId = await createPromise
return {
id: docId,
...data,
createTimestamp: new Date(),
updateTimestamp: new Date()
}
}
모듈식 Firebase Firestore가 아닌 경우에도 동일한 기능(< 버전 9)
import { firebase } from '@firebase/app'
async create(data, id = null) {
const collectionRef = (await firestore()).collection(this.collectionPath)
const serverTimestamp = firebase.firestore.FieldValue.serverTimestamp()
const dataToCreate = {
...data,
createTimestamp: serverTimestamp,
updateTimestamp: serverTimestamp
}
const createPromise =
id === null || id === undefined
? // Create doc with generated id
collectionRef.add(dataToCreate).then(doc => doc.id)
: // Create doc with custom id
collectionRef
.doc(id)
.set(dataToCreate)
.then(() => id)
const docId = await createPromise
return {
id: docId,
...data,
createTimestamp: new Date(),
updateTimestamp: new Date()
}
}
먼저 주어진 코드는 자바스크립트용입니다. 이것은 안드로이드 스튜디오(JAVA)용입니다.
Map<String, Object> city = new HashMap<>();
city.put("name", "Los Angeles");
city.put("state", "CA");
city.put("country", "USA");
//Here LA is Document name for Assigning
db.collection("cities").document("LA")
.set(city)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
Log.d(TAG, "DocumentSnapshot successfully written!");
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.w(TAG, "Error writing document", e);
}
});
데이터를 추가하는 동안 ID를 설정하려면 Set Method를 사용해야 합니다.
이 코드가 오래된 경우 여기에서 새 코드를 찾으십시오.
ID를 사용하여 새 문서 만들기
createDocumentWithId<T>(ref: string, document: T, docId: string) {
return this.afs.collection(ref).doc<T>(docId).set(document);
}
EX: 이 예제에서는 전자 메일을 문서의 ID로 사용합니다.
this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
생성된 사용자 지정 id not firestore를 추가하려면 다음을 수행합니다.
value:String=FirebaseAuth.getInstance().currentUser?uid.toString() FirebaseFirestore.getInstance().collection("샵 세부 정보").document(u).집합(데이터)
//u가 firestore에 있지 않습니다. 먼저 생성되고 데이터를 추가합니다. //firestore에 추가할 데이터는 무엇이든 됩니다.
많은 시간을 조사한 후에 나는 이것에 대한 해결책을 혼자 얻었습니다.
사실, 우리가 전에 String을 선언하고 해시맵에서 그것을 호출하면 작동하지 않을 것입니다.
솔루션은 다음과 같습니다.
Map<String, Object> city = new HashMap<>();
city.put("batch", "25");
city.put("blood", ""+stuBlood.getText().toString());
city.put("email", ""+stuEmail.getText().toString());
city.put("facebook", ""+stuFacebook.getText().toString());
city.put("gender", ""+stuGender.getText().toString());
city.put("id", ""+stuID.getText().toString());
city.put("image", ""+stuImage.getText().toString());
city.put("location", ""+stuLocation.getText().toString());
city.put("name", ""+stuName.getText().toString());
city.put("phone", ""+stuPhone.getText().toString());
city.put("whatsapp", ""+stuWhatsApp.getText().toString());
city.put("telegram", ""+stuTelegram.getText().toString());
이제 작동하기를 바랍니다.
언급URL : https://stackoverflow.com/questions/48541270/how-to-add-document-with-custom-id-to-firestore
'programing' 카테고리의 다른 글
기지개를 켜다커밋할 수 없습니다.어떻게 진행하거나 중단합니까? (0) | 2023.07.10 |
---|---|
SQL Oracle 정렬 문자열(숫자) 및 (숫자가 있는 문자) (0) | 2023.07.10 |
Angular는 XSS 또는 CSRF를 어떻게 처리합니까? (0) | 2023.07.05 |
MVC4에서 BundleCollection이 캐시된 스크립트 번들을 강제로 플러시하는 방법 (0) | 2023.07.05 |
유성 업서트 사용 방법 (0) | 2023.07.05 |