Javascript 无法获取从函数调用发送到firebase云函数的数据
我有一个名为sendMail的firebase函数,用于发送电子邮件。我正在尝试将收件人的电子邮件地址和另一个参数传递给函数。在我的vue应用程序中,我按如下方式调用该函数:Javascript 无法获取从函数调用发送到firebase云函数的数据,javascript,firebase,vue.js,google-cloud-functions,Javascript,Firebase,Vue.js,Google Cloud Functions,我有一个名为sendMail的firebase函数,用于发送电子邮件。我正在尝试将收件人的电子邮件地址和另一个参数传递给函数。在我的vue应用程序中,我按如下方式调用该函数: sendEmail(){ console.log(this.email) let sendMail = firebase.functions().httpsCallable('sendMail'); sendMail(
sendEmail(){
console.log(this.email)
let sendMail = firebase.functions().httpsCallable('sendMail');
sendMail(
{
"email": this.email,
"superu": this.superu
}
).then(
result => {
console.log(result)
}
)
}
我的函数index.js如下所示:
const functions = require('firebase-functions');
const admin = require("firebase-admin")
const nodemailer = require('nodemailer');
admin.initializeApp()
//google account credentials used to send email
var transporter = nodemailer.createTransport({
host: 'smtp.gmail.com',
port: 465,
secure: true,
auth: {
user: '*****@****.com',
pass: '***********'
}
});
exports.sendMail = functions.https.onRequest((req, res) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Content-Type");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
console.log(req.body['data']);
const mailOptions = {
from: `•••••••••@gmail.com`,
to: req.body['data'].email,
subject: 'contact form message',
html: `<h2 style="color: teal">Order Confirmation</h2>
<a href="https://track-acquintances.firebaseapp.com/signup/${req.body.superu}">
<b> Register </b>"<br>
</a>`
};
return transporter.sendMail(mailOptions, (error, data) => {
if (error) {
return res.status(200).json({data: error.message});
}
data = JSON.stringify(data)
return res.status(200).json({data: data});
});
});
问题是我无法访问传递的电子邮件数据,该功能失败。我将req.body['data']记录到函数日志中,并看到{email:'xxx@xx.xxx.x“,superu:true}。但是我尝试了req.body['data'].email和req.body['data']['email']两种方法,但都不起作用。在我的浏览器控制台中,我得到{data:No recipients defined}。任何帮助都将不胜感激。谢谢您混淆了两种类型的云功能: 您的云函数定义为,这意味着您可以通过在浏览器中访问其URL、调用fetch或使用XMLHTTPRequest来调用它 您的客户机代码尝试调用一个不同类型的所谓的。虽然也可以通过HTTPS直接调用可调用的云函数,但它们有一个特定的有线协议供调用 由于这两种类型的函数不匹配,因此客户端代码以不同于服务器处理的格式传递参数 您需要调用HTTPS函数,或者将云函数转换为可调用。后者看起来像:
exports.sendMail = functions.https.onCall((data, context) => {
const email = data.email;
const superu = data.superu;
...
});
您混淆了两种类型的云函数: 您的云函数定义为,这意味着您可以通过在浏览器中访问其URL、调用fetch或使用XMLHTTPRequest来调用它 您的客户机代码尝试调用一个不同类型的所谓的。虽然也可以通过HTTPS直接调用可调用的云函数,但它们有一个特定的有线协议供调用 由于这两种类型的函数不匹配,因此客户端代码以不同于服务器处理的格式传递参数 您需要调用HTTPS函数,或者将云函数转换为可调用。后者看起来像:
exports.sendMail = functions.https.onCall((data, context) => {
const email = data.email;
const superu = data.superu;
...
});
我将如何访问设置标题?我将如何访问设置标题?