วิธีเพิ่มเอกสารด้วย Custom ID ไปยัง firestore


คำตอบ:


218

ในการใช้ ID ที่กำหนดเองคุณจำเป็นต้องใช้.setแทน.add

สิ่งนี้จะสร้างเอกสารที่มี ID "LA":

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

สิ่งนี้นำมาจากเอกสารอย่างเป็นทางการที่นี่


1
หากต้องการเพิ่มในเอกสารต้องทำ"LA"อย่างไร วิธีนี้ใช้ไม่ได้: .doc("LA").add({...})โปรดบอกว่าฉันจะทำอย่างไร
Shubham Kushwah

3
.add()เทียบเท่ากับ.doc().set()
roshnet

ถ้าเราต้องการเพิ่มรหัส custome เราต้องใช้. doc (). set () แทนการเพิ่ม ()
Bilal Yaqoob


7

หากต้องการขยายคำตอบที่ยอมรับหากคุณต้องการให้ไคลเอ็นต์ของคุณสร้าง ID แบบสุ่มสำหรับเอกสารก่อนที่จะส่งไปยัง Firestore (สมมติว่ามีcreateId()ฟังก์ชันเดียวกันอยู่นอก AngularFire2)

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

สิ่งนี้มีประโยชน์สำหรับการตั้งค่า ID เป็นฟิลด์อ้างอิงในเอกสารอื่นก่อนที่ Firestore จะบันทึกอะไรก็ตาม หากคุณไม่จำเป็นต้องใช้ออบเจ็กต์ที่บันทึกไว้ทันทีการทำเช่นนี้จะทำให้กระบวนการเร็วขึ้นโดยไม่ต้องรอ ID set()ขณะนี้การโทรเป็นแบบอะซิงโครนัสจากไปป์ที่คุณอาจใช้ใน Angular

สังเกตว่าฉันไม่ได้ใส่id: newIdวัตถุที่ตั้งไว้เนื่องจากโดยค่าเริ่มต้น Firestore จะไม่บันทึก ID เป็นฟิลด์ในเอกสาร


4

คุณสามารถทำได้ด้วยวิธีนี้

// 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);

1

db.collection ("ผู้ใช้"). document (mAuth.getUid ()). set (ผู้ใช้)

ที่นี่ชื่อของคอลเลกชันคือ"users"และชื่อเอกสารเป็นของผู้ใช้UID

u นี่ต้องใช้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();
        }
    });
}

1

สร้างเอกสารใหม่ด้วย ID

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

EX: ตัวอย่างนี้โดยใช้ take email เป็น ID สำหรับเอกสาร

this.fsService.createDocumentWithId('db/users', {}, credential.user.email);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.