记录表单数据,即邮箱、密码和角色,表明正在将正确的数据传递给函数

App.js file

 const createUserWithRole = httpsCallable(functions, "createUserAndAddUserRole"); 
 console.log(form) // WORKS
 const response = await createUserWithRole({
    email: form.email,
    password: form.password,
    role: form.role,
   });

Functions.js

    const admin = require("firebase-admin");

    // const cors = require("cors")({origin: true}); // Add cors middleware
    const {onCall} = require("firebase-functions/v2/https");
    const logger = require("firebase-functions/logger");
    
    admin.initializeApp();
    exports.createUserAndAddUserRole = onCall(async (data, context) => {
      
      // logger 1
      logger.log("data", data);
    
      
      // const email = "bright@gmail.com";
      // const password = "bright";
      // const role = "admin";
    
      const userRecord = await admin
          .auth()
          .createUser({
            email,
            password,
          });
      logger.log("User Record", userRecord);
      return admin.auth().getUserByEmail(data.email).then((user)=> {
        return admin.auth().setCustomUserClaims(user.uid, {
          role: role,
        });
      }).then(() => {
        console.log("Claims Set");
        const userDataAfter = admin.getUserByEmail(data.email);
        return {
          status: 200,
          message: `Success! ${data.email} has been made ${data.role} role`,
        };
      }).catch((err) => {
        return {
          status: 500,
          message: err,
        };
      });
    });

运行记录器1将记录器1打印出来,对象似乎是请求对象,而我传递的数据位于子对象100

OnCall的文档指出,简单地使用data.mail将会起作用,但这不起作用.

我传递的数据是错误的吗?如何从jsonPayload.data对象传递或提取数据?

推荐答案

您使用的是第二代云函数(参见const {onCall} = require("firebase-functions/v2/https");).正如您在Callable Cloud Functions 2nd generation的文档中看到的,传递给回调函数的参数已从

onCall((data, context) => {...});(第一代)

onCall((request) => {...});(第二代)

So you need 至 do as follows:

exports.createUserAndAddUserRole = onCall(async (request) => {
      
   const email = request.data.email;
   const password = request.data.password;
   const role = request.data.role;

   // ...

Javascript相关问答推荐

类型错误:tasks.map不是函数(MERN堆栈)

使用JavaScript重命名对象数组中的键

在JavaScript中,如何将请求的回调函数的结果合并到运行的代码中?

为什么使用MAX_SAFE_INTEGER生成随机整数时数字分布不准确?

TypScript界面中的Infer React子props

if/else JavaScript中的条件行为

D3 Scale在v6中工作,但在v7中不工作

如何在不创建新键的情况下动态更改 map 中的项目?

当试图显示小部件时,使用者会出现JavaScript错误.

处理时间和字符串时MySQL表中显示的日期无效

无法从NextJS组件传递函数作为参数'

加载背景图像时同步旋转不显示的问题

为什么123[';toString';].long返回1?

如何在使用rhandsontable生成表时扩展数字输入验证?

在浏览器中触发插入事件时检索编码值的能力

如何 for each 输入动态设置输入变更值

JS Animate()方法未按预期工作

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

对具有相似属性的对象数组进行分组,并使用串连的值获得结果

未捕获语法错误:Hello World中的令牌无效或意外