Javascript 试图通过firebase函数设置自定义声明时发送未定义的JSON字符串

Javascript 试图通过firebase函数设置自定义声明时发送未定义的JSON字符串,javascript,firebase,firebase-authentication,google-cloud-functions,firebase-admin,Javascript,Firebase,Firebase Authentication,Google Cloud Functions,Firebase Admin,有人能看出我做错了什么吗?我正在使用firebase,我正在向我的云函数发送数据 window.addEventListener("load", function load(event) { firebase.auth().onAuthStateChanged(function (user) { if (user) { let user = firebase.auth().currentUser; let userInfo

有人能看出我做错了什么吗?我正在使用firebase,我正在向我的云函数发送数据

window.addEventListener("load", function load(event) {

    firebase.auth().onAuthStateChanged(function (user) {
        if (user) {
            let user = firebase.auth().currentUser;
            let userInfo = db.collection("Users").doc(user.uid);



            userInfo.get().then(function (doc) {
                if (doc.exists) {

                    let userEmail = firebase.auth().currentUser.email
                    var xhttp = new XMLHttpRequest();

                    xhttp.open(
                        "POST",
                        "https://us-central1-******.cloudfunctions.net/addMRole",
                        true
                    );
                    xhttp.setRequestHeader("Content-Type", "application/json");
                    xhttp.send(
                        JSON.stringify({
                            email: userEmail,
                            uID: user.uid
                        })
                    );
                    console.log("should still be working HOPEFULLY HERE YOU ARE")


                }
            });

        }

    });

});

我正在把它发送到我的云函数

exports.addMRole = functions.https.onRequest((req, context) => {

  let email = req.email;
  let uiD = req.uID

  console.log(email)
  console.log(uiD)

  return admin.auth().getUserByEmail(email).then(user => {

    return admin.auth().setCustomUserClaims(uiD, {

      member: true


    });
  }).then(() => {
    return {
      message: `success! ${req.email} is now a member!`
    }
  }).catch(err => {
    console.log(err)
    return err;
  });
});




但是由于某些原因,它被作为未定义的发送到云函数。我想它不喜欢我把它寄给它的方式。看起来它对家不太满意,我从这里的第一个代码开始发送它


xhttp.send(
                        JSON.stringify({
                            email: userEmail,
                            uID: user.uid
                        })
                    );

和userEmail/user.uid控制台在发送前会记录良好,但在我登录此处时会在函数中记录

console.log(email)
  console.log(uiD)

它在我的函数日志中显示为未定义发送。我基本上是在向我的云功能发送用户电子邮件和UID,我想将他们的自定义声明更改为会员。这很奇怪,因为我让它工作,然后我做了一些事情,现在不知道如何让它再次工作,不知道我在这件事上搞砸了。哈哈。谢谢你的帮助这是不对的:

let email = req.email
let uiD = req.uID
这些都是未定义的,就像你现在写的那样。如果要访问发布到HTTP函数的JSON对象的属性,应按如下方式操作,如图所示:


除此之外,您的函数也不会向调用者发送响应。按照现在的结构,它可能会完成它的工作,但它总是在默认的60秒后超时。从
回调返回响应的方式将不起作用。似乎您可能将HTTP类型触发器与可调用类型触发器混合在一起,它们有非常不同的发送响应的方式。由于您正在编写HTTP类型触发器,因此应按照发送响应的说明进行操作。

如果您有新问题,请单独发布,并解释哪些问题无法按预期方式工作。堆栈溢出并不意味着在同一代码位上对一系列新问题进行反复迭代
let email = req.body.email
let uiD = req.body.uID