📌  相关文章
📜  firestore 云函数更新文档 - TypeScript (1)

📅  最后修改于: 2023-12-03 15:00:46.063000             🧑  作者: Mango

Firestore 云函数更新文档 - TypeScript

Firestore是一种非关系型文档数据库,它是Google Cloud的一部分。当您使用Firebase,您可以快速创建移动应用程序和网站,并轻松地将它们与Cloud Firestore集成。

在这个教程中,我们将学习如何使用Firestore和云函数来更新文档。我们将使用TypeScript编写云函数。让我们开始吧!

步骤1:安装和初始化Firebase

首先,我们需要通过npm安装Firebase和Firebase Admin SDK。我们还需要在Firebase控制台中设置Firebase项目。

npm install firebase firebase-admin

当你完成以后,打开Firebase控制台,创建或选择一个现有的项目。在您的Firebase项目中,找到“设置”,然后点击“服务帐户”。然后,点击“生成新的专用密钥”并下载JSON文件。

接着,将JSON文件拷贝到Firebase项目的根目录下,并将其命名为“serviceAccountKey.json”。

然后,在您的TypeScript代码的开头添加以下内容:

import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'

const serviceAccount = require('./serviceAccountKey.json')

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
})

const db = admin.firestore()

这里我们引入了Firebase Functions和Firebase Admin,然后初始化了Firebase Admin SDK并创建了Firestore实例。我们使用了从JSON文件中读取的服务帐户密钥。

这样,我们就设置好了Firebase。

步骤2:编写云函数

接下来,我们将编写云函数来更新Firestore中的文档。

我们将编写一个云函数,当触发器执行时,更新文档的内容。

以下是函数的完整代码:

export const updateDocument = functions.https.onCall(async (data, context) => {
  // 获取需要更新文档的引用
  const documentRef = db.collection('users').doc(data.documentId)

  try {
    // 更新文档
    await documentRef.update({
      name: data.name,
      email: data.email
    })

    // 返回成功
    return {
      success: true
    }
  } catch (e) {
    // 返回错误
    return {
      success: false,
      error: e.message
    }
  }
})

在这个函数中,我们首先获取需要更新的文档的引用。然后,我们使用这个引用来更新文档的内容。在这个示例函数中,我们简单地更新了文档的名称和电子邮件。

如果文档更新成功,我们返回一个包含success=true的对象。否则,我们返回一个包含success=false和错误消息的对象。

步骤3:部署云函数

现在我们已经编写了云函数,接下来我们需要将其部署到Firebase云函数中。

使用以下命令将您的云函数部署到Firebase:

firebase deploy --only functions

这将部署您的云函数。如果一切顺利,您应该能够在Firebase控制台中看到您的云函数。

步骤4:在应用程序中调用云函数

最后,我们需要在您的应用程序中调用云函数。让我们看一下如何在JavaScript中调用云函数。

const updateDocument = firebase.functions().httpsCallable('updateDocument')

updateDocument({
  documentId: 'doc1',
  name: 'John Smith',
  email: 'john@example.com'
})
.then(result => {
  console.log('Document updated successfully')
})
.catch(error => {
  console.error(error)
})

在这个示例中,我们使用firebase.functions().httpsCallable方法调用我们的云函数。我们将一个对象作为参数传递给函数,该对象包含文档ID、名称和电子邮件。

如果函数成功运行,我们将在控制台上看到“Document updated successfully”消息。

结论

现在,您已经了解了如何使用Firestore和云函数更新文档。使用云函数,您可以轻松地执行各种任务,而不需要像以前一样使用“中间服务器”。好好利用Firebase提供的这些功能,让您的应用程序更加安全、快速和强大!