记录表单数据,即电子邮件、密码和 Angular 色,显示正确的数据正在传递给函数
App.js 文件
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 = "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="0163736866697541666c60686d2f626e6c" rel="noreferrer noopener nofollow">[email protected]</a>";
// 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 打印出一个对象,该对象似乎是一个请求对象,其中我传递的数据位于子对象jsonPayload.data
onCall 的文档指出,仅使用 data.email 即可,但事实并非如此。
我传递的数据错误吗?如何传递数据或从 jsonPayload.data 对象中提取数据?
最佳答案
您使用 Cloud Functions 2n gen(参见 const {onCall} = require("firebase-functions/v2/https");
)。正如您在 Callable Cloud Functions 2nd generation 的文档中看到的那样传递给回调函数的参数已更改为
onCall((data, context) => {...});
(第一代)
至
onCall((request) => {...});
(第二代)
因此您需要执行以下操作:
exports.createUserAndAddUserRole = onCall(async (request) => {
const email = request.data.email;
const password = request.data.password;
const role = request.data.role;
// ...
关于javascript - 无法从我的 firebase 可调用函数中提取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76580471/