Bagaimana cara menambahkan Dokumen dengan ID Kustom ke firestore

96

Apakah ada peluang untuk menambahkan dokumen ke koleksi firestore dengan id yang dibuat khusus, bukan id yang dibuat oleh mesin firestore?

Harvey Dent
sumber

Jawaban:

200

Untuk menggunakan ID khusus, Anda perlu menggunakan .set, bukan.add

Ini membuat dokumen dengan ID "LA":

db.collection("cities").doc("LA").set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})

Ini diambil dari dokumen resmi di sini

Finlay Percy
sumber
1
Bagaimana jika saya ingin menambahkan ke dokumen "LA"? Ini tidak akan berhasil: .doc("LA").add({...})Tolong beritahu bagaimana saya bisa melakukannya.
Shubham Kushwah
2
.add()setara dengan.doc().set()
roshnet
16
this.afs.collection('[your collection]').doc('[your ID]').set([your document]);
Papa Kojo
sumber
2
Beberapa penjelasan akan membantu di sini!
pengguna3483203
7

Untuk memperluas jawaban yang diterima, jika Anda ingin klien Anda membuat ID acak untuk dokumen tersebut sebelum mendorong ke Firestore (dengan asumsi createId()fungsi yang sama ada di luar AngularFire2)

const newId = db.createId();
db.collection("cities").doc(newId).set({
    name: "Los Angeles",
    state: "CA",
    country: "USA"
})

Ini berguna untuk menyetel ID sebagai bidang referensi di dokumen lain, bahkan sebelum Firestore menyimpan apa pun. Jika Anda tidak perlu langsung menggunakan objek yang disimpan, ini mempercepat proses dengan tidak membuat Anda menunggu ID. The set()panggilan sekarang asynchronous dari pipa Anda mungkin menggunakan di sudut

Perhatikan saya tidak memasukkan id: newIdobjek yang disetel, karena Firestore secara default tidak menyimpan ID sebagai bidang di dokumen

David Thong Nguyen
sumber
2

Anda bisa melakukannya dengan cara ini

// 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);
Jonel Dominic Brave
sumber
1

db.collection ("pengguna"). dokumen (mAuth.getUid ()). set (pengguna)

Di sini, nama koleksi adalah "users"dan nama dokumen adalah penggunaUID

Di sini u perlu menggunakan settidakadd

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();
        }
    });
}
Deven
sumber
1

Buat Dokumen baru dengan ID

  createDocumentWithId<T>(ref: string, document: T, docId: string) {
    return this.afs.collection(ref).doc<T>(docId).set(document);
  }

EX: contoh ini dengan mengambil email sebagai ID untuk dokumen tersebut

this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
sun sreng
sumber