【问题标题】:Firebase callable function check type of data parameterFirebase 可调用函数检查数据参数的类型
【发布时间】:2021-10-18 22:01:40
【问题描述】:

我有一个 firebase 可调用函数来更新我数据库中的用户。
我想检查我从前端收到的对象 data 的类型。

这是对象:

{ "data": 
    { "user": 
        {
        "displayName": "Flo",
        "email": "flo@gmail.com",
        "phoneNumber": "+33",
        "photoURL": "",
        "providerId": "fdgfg",
        "uid": "2",
        "lastSignInTime": "dddf",
        "creationTime": "sdfd",
        "isEmailVerified": true
        } 
    }
}

这里是可调用函数:

exports.updateUser = functions.https.onCall((data: { user: User }, context) => {
  const user = data.user
  if (context.auth != null && instanceOf(user)) {
    db.doc(${USERS_DB_NAME}/${context.auth?.uid}).set(JSON.parse(JSON.stringify(user)))
    return new SuccessResponse<Message>({ message: SUCCESS_MESSAGE }).toResponse()
  } else {
    return new ErrorResponse('permission-denied', PERMISSION_DENIED_MESSAGE).toResponse()
  }
})

这是应该检查类型的函数:

static instanceOf(object: any): boolean {
    const properties = ['displayName', 'email', 'phoneNumber', 'photoURL', 'providerId', 'uid', 'lastSignInTime', 'creationTime', 'isEmailVerified']
    return Object.keys(object).every(v => properties.includes(v))
  }

问题是:

  • user.displayName 返回 undefined =>(预期 “Flo” )
  • Object.keys(user) 返回 ['0', '1', '2', ...] em> =>(预期 ['displayName', 'email', 'phoneNumber', ...]

我已经看到我可以像这样将我的所有属性放在 const 变量中:

const displayName = data.user.displayName
const email = data.user.email
...

但这不是一个真正干净的解决方案

【问题讨论】:

  • 我认为您收到的实际对象不是您所期望的..
  • 这就是 Mike 的问题,这是 Cloud Functions 中的当前错误

标签: angular typescript firebase google-cloud-functions


【解决方案1】:

这是我目前在使用 Firebase Cloud Functions 时遇到的一个错误,来自onCall 的数据正在返回一个嵌套数据对象

data: {data: payload}

目前的解决方法是重新声明数据如下:

incomingData = data.data? data.data: data;

它应该很快就会修复,与此同时 - 您可以自己跟踪它:

if (data.data) console.error("data.data is still a thing")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2011-11-24
    • 2021-12-09
    • 2013-08-11
    • 2012-02-08
    • 1970-01-01
    • 2013-09-14
    相关资源
    最近更新 更多