无法从Firestore获取文件

时间:2019-01-12 09:07:07

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

enter image description here我正在尝试在Firebase Cloud Function中从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')
    })
}

1 个答案:

答案 0 :(得分:2)

以下方法应该起作用:

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 /您正在在Cloud Function中设置一个事件处理程序,该事件处理程序已通过事件触发(这里是对HTTPS Cloud Function URL的调用)。

在HTTPS Cloud Function中,您只需使用Firestore get()方法即可从数据库中读取数据。无需设置其他事件处理程序或任何侦听器:每次调用HTTPS函数时,将触发使用get()完成的“一次”数据库读取/查询。

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