如何使用where子句从firestore中删除文档

Ami*_*nha 21 javascript firebase google-cloud-firestore

var jobskill_ref = db.collection('job_skills').where('job_id','==',post.job_id);
jobskill_ref.delete();
Run Code Online (Sandbox Code Playgroud)

抛出错误

jobskill_ref.delete不是一个函数

Fra*_*len 34

只有在拥有文档后才能删除文档DocumentReference.要得到它,你必须首先执行查询,然后循环QuerySnapshot,最后DocumentSnapshot根据它删除每个ref.

var jobskill_query = db.collection('job_skills').where('job_id','==',post.job_id);
jobskill_query.get().then(function(querySnapshot) {
  querySnapshot.forEach(function(doc) {
    doc.ref.delete();
  });
});
Run Code Online (Sandbox Code Playgroud)


Dee*_*ari 13

//The following code will find and delete the document from firestore

const doc = await this.noteRef.where('userId', '==', userId).get();
doc.forEach(element => {
    element.ref.delete();
    console.log(`deleted: ${element.id}`);
});
Run Code Online (Sandbox Code Playgroud)


jam*_*oks 8

我为此使用批处理写入。例如:

var jobskill_ref = db.collection('job_skills').where('job_id','==',post.job_id);
let batch = firestore.batch();

jobskill_ref
  .get()
  .then(snapshot => {
    snapshot.docs.forEach(doc => {
      batch.delete(doc.ref);
    });
    return batch.commit();
  })
Run Code Online (Sandbox Code Playgroud)

ES6异步/等待:

var jobskill_ref = db.collection('job_skills').where('job_id','==',post.job_id);
let batch = firestore.batch();

jobskill_ref
  .get()
  .then(snapshot => {
    snapshot.docs.forEach(doc => {
      batch.delete(doc.ref);
    });
    return batch.commit();
  })
Run Code Online (Sandbox Code Playgroud)

  • 请注意,“批量写入最多可以包含 500 个操作”,因此可能需要额外的逻辑,具体取决于文档的数量 (4认同)

小智 5

.ref弗兰克的回答解决了我的问题的关键部分是doc.ref.delete()

我最初只遇到了doc.delete()“不是函数”错误。现在我的代码看起来像这样并且工作完美:

let fs = firebase.firestore();
let collectionRef = fs.collection(<your collection here>);

collectionRef.where("name", "==", name)
.get()
.then(querySnapshot => {
  querySnapshot.forEach((doc) => {
    doc.ref.delete().then(() => {
      console.log("Document successfully deleted!");
    }).catch(function(error) {
      console.error("Error removing document: ", error);
    });
  });
})
.catch(function(error) {
  console.log("Error getting documents: ", error);
});
Run Code Online (Sandbox Code Playgroud)