首页 > 解决方案 > 当我尝试接收用户电子邮件的数据时,为什么我的 Firebase 云功能代码会引发错误

问题描述

我一直在学习如何使用 firebase 云功能,并且慢慢了解了 HTTPS 请求的工作原理,但是我一直在为用户的电子邮件检索数据。

我想检查他们在应用程序中输入的特定电子邮件是否已经在我的 firebase 项目中使用,我打算在客户端执行此操作,但了解到如果我通过云功能执行此操作会更安全。

import * as functions from 'firebase-functions'
import * as admin from 'firebase-admin'
import { response } from 'express';
admin.initializeApp()

export const getEmail = functions.https.onRequest((request, response) => {
    admin.auth().getUserByEmail(email)
    .then(snapshot => {
        const data = snapshot.data()
        response.send(data)
    })
    .catch(error => {
        //Handle error
        console.log(error)
        response.status(500).send(error)
    })
})

我不断收到“userRecord”类型上不存在数据对象的错误消息。

错误消息(更新):“UserRecord”类型上不存在属性“数据”

标签: javascriptswiftfirebasegoogle-cloud-functionsfirebase-admin

解决方案


所以admin.auth().getUserByEmail返回一个包含非空UserRecord的 Promise 。

UserRecord似乎没有方法data()。如果要获取 this 的 JSON 表示UserRecord,请使用:

const data = snapshot.toJSON()

如果您只需要访问电子邮件,请使用:

const data = snapshot.email


推荐阅读