【问题标题】:Google Firestore Deleting Multiple FieldsGoogle Firestore 删除多个字段
【发布时间】:2021-11-21 21:19:15
【问题描述】:

我有一个火库。我正在尝试从文档“idAvailable”中删除特定记录。但是,当我们点击这个端点时,id 并没有从 idAvailable 表中删除:http://localhost:5001/us-central1/reserveId,它在下面的代码 sn-p 中定义。

exports.reserveId = functions.https.onRequest(async (req, res) => {
  cors(req, res, ()=> {
    const documentId = "idAvailable"
    const setReserved = "idReserved"
    admin.firestore().collection("Vacancy").doc(documentId).get().then(doc => {

      const field = doc.data().ar[0]
      console.log("Field " + JSON.stringify(field))

      // No error but doesn't execute correctly
      const doDelete = db.collection("Vacancy").doc(documentId).update(field, admin.firestore.FieldValue.delete())

    res.send(doc.data().ar[0])

    }).catch(error => {
      res.send(error)
    })
  })
});

具体来说,这一行:

const doDelete = db.collection("Vacancy").doc(documentId).update(field, admin.firestore.FieldValue.delete())

不会从集合中删除。

为什么会这样?

【问题讨论】:

    标签: node.js firebase google-cloud-firestore google-cloud-functions firebase-admin


    【解决方案1】:

    您是否要从数组中删除项目?您可以改用arrayRemove。你也可以使用async-await 语法,因为你的函数是异步的:

    exports.reserveId = functions.https.onRequest(async (req, res) => {
      cors(req, res, async () => {
        const documentId = "idAvailable"
        const setReserved = "idReserved"
        
        const snap = await admin.firestore().collection("Vacancy").doc(documentId).get()
        const field = snap.data().ar[0] // value of that array item
       
        await db.collection("Vacancy").doc(documentId).update({ ar: admin.firestore.FieldValue.arrayRemove(field) })
    
        res.send(doc.data().ar[0]) // response body is deleted from array
      })
    });
    

    请注意,如果您知道要删除的项目的值(完全相同的对象/字符串),那么您可以直接使用 arrayRemove 而无需先获取文档。


    如果你想删除多个字段,那么你可以像这样传递一个对象:

    await db.collection("Vacancy").doc(documentId).update({ 
      field1Name: admin.firestore.FieldValue.delete(),
      field2Name: admin.firestore.FieldValue.delete()
    })
    

    【讨论】:

      猜你喜欢
      • 2021-08-23
      • 1970-01-01
      • 2018-06-17
      • 2018-04-09
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 1970-01-01
      • 2020-07-14
      相关资源
      最近更新 更多