如何查询文档列表,然后更新Firebase中的字段值?

时间:2019-09-23 17:39:18

标签: firebase react-native google-cloud-firestore

我想在Firestore的文档集中更改每个名为boston的州的名称,如何查询Firestore中的文档列表,然后使用react native将当前州名更改为新名称?

我尝试过

{{1}}

但出现此错误

  

函数WriteBatch.update()要求其第一个参数为DocumentReference,但它是:自定义查询对象

1 个答案:

答案 0 :(得分:2)

事实上,sfDocRef不是DocumentReference,而是Query

您必须使用异步get()方法执行查询,并将该查询返回的每个文档添加到批处理中。以下代码可以达到目的:

var batch = db.batch();

var sfRe = db.collection("country").doc("SF");

var sfDocQuery = db.collection("cities").where("state", "==", "boston");

sfDocQuery.get().then(querySnapshot => {
    querySnapshot.forEach(doc => {
        batch.update(doc.ref, { "state": NewName });
    });

    //......
    batch.update(sfRe, {"state": NewName});  //This one will work, since sfRe is a DocumentReference
    //......


    return batch.commit()

})
.then(() => {

    //The commit() method is asynchronous and returns a Promise

    //return for your Save function

})