【问题标题】:Can't get document from firestore无法从 Firestore 获取文档
【发布时间】:2019-06-07 01:28:16
【问题描述】:

我正在尝试在 Firebase 云函数中控制台记录来自 Firestore 的文档。有人可以帮我写代码吗?

export const getUser = functions.https.onRequest((req, res) => {
    const uid = req.query.uid

    corsHandler(req, res, () => {
        onUpdate(res, uid)

    })

})

function onUpdate(res, uid) {
    functions.database.ref(`/profiles/{profileId}`).onUpdate((change, context) => {
        const profileId = uid

        console.log('BEFORE: ', change.before.val())
        res.send('OK')
    })
}

【问题讨论】:

标签: typescript firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

以下应该有效:

export const getUser = functions.https.onRequest((req, res) => {
    const uid = req.query.uid

    corsHandler(req, res, () => {

       admin.firestore().collection('profiles').doc(uid).get()
       .then(snapshot => {
          console.log(snapshot.data())
          res.send('OK')
       })
       .catch(err => {
          console.error('ERROR:', err)
          res.status(500).send(err)
        })

    })

})

注意,有

functions.database.ref(`/profiles/{profileId}`).onUpdate()

在您的 onUpdate 函数中:

1/ 您使用的是实时数据库的语法,而不是 Firestore;

2/ 您正在通过事件触发的云函数中设置事件处理程序(此处是对 HTTPS 云函数 URL 的调用)。

在您的 HTTPS 云函数中,您应该简单地使用 Firestore get() 方法来读取数据库。无需设置另一个事件处理程序或任何侦听器:每次调用 HTTPS 函数时都会触发使用 get() 完成的“一次性”数据库读取/查询。

您可以观看此官方视频:https://www.youtube.com/watch?v=7IkUgCLr5oA

【讨论】:

  • 非常感谢您的回复。不幸的是,snapshot.val() 返回 null。
  • 配置文件下有key=uid的文件吗?您可以将数据库的导出添加到您的帖子中吗?
  • 是的。我刚刚添加了firebase的截图
  • 好的,我了解:在您的代码中,您使用查询实时数据库的代码而不是 Firestore。让我更新我的答案。
  • 效果很好?,非常感谢您抽出宝贵时间??
猜你喜欢
  • 2021-11-13
  • 1970-01-01
  • 2018-09-03
  • 2018-10-24
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 1970-01-01
  • 2022-01-20
相关资源
最近更新 更多