Javascript MongoDB触发函数返回';无法访问未定义的';
这是一个类似于以下中端代码的代码 尝试从数据库链接Javascript MongoDB触发函数返回';无法访问未定义的';,javascript,mongodb,triggers,Javascript,Mongodb,Triggers,这是一个类似于以下中端代码的代码 尝试从数据库链接guest.name属性时出现问题。它返回一个错误,说明: 无法访问未定义的成员的名称 我已向各自的集合和数据库提供了所有触发器源详细信息。 如果我删除了对guest.name的引用,代码就可以正常工作。似乎代码var users=changevent.fullDocument未检索任何信息。换句话说,用户变量返回未定义 有人知道为什么吗 exports = function(changeEvent) { const
guest.name
属性时出现问题。它返回一个错误,说明:
无法访问未定义的成员的名称
我已向各自的集合和数据库提供了所有触发器源详细信息。
如果我删除了对guest.name
的引用,代码就可以正常工作。似乎代码var users=changevent.fullDocument代码>未检索任何信息。换句话说,用户
变量返回未定义
有人知道为什么吗
exports = function(changeEvent) {
const sendGridApiUrl = "https://api.sendgrid.com/v3/mail/send";
// Access to SendGrid API Key value stored in Stitch Secret
const sendGridApiKey = "API_KEY";
// Access the latest version of the document
var users = changeEvent.fullDocument;
// Build email data
console.log('==> ', JSON.stringify(users));
var emailData = BuildEmailData(users);
console.log('==> ', JSON.stringify(emailData));
// Access the default http client and execute a POST request
return context.http.post({
url: sendGridApiUrl, headers: {Authorization: [`Bearer ${sendGridApiKey}`]}, body: emailData, encodeBodyAsJSON: true})
.then(res =>{
console.log ('-->', res.statusCode); // For logging
});
};
/**
* This function returns a JSON object that respects the format of SendGrid API Request Body
*
* @param {object} inserted document - JSON object
* @return {object} returns a JSON object
*
*/
function BuildEmailData (guest){
var recipientEmail = "mail@gmail.com";
var recipientName = guest.name;
var senderName = "Your Party Buddy";
var senderEmail = "second_mail@gmail.com";
var subject = "Invitation to mega party";
var emailData = {
"personalizations": [
{
"to": [
{
"email": recipientEmail
}
],
"subject": subject
}
],
"from": {
"email": senderEmail
},
"content": [
{
"type": "text/html",
"value": BuildEmailContentFromTemplate(senderName, recipientName)
}
]
};
return emailData;
}
/**
* This function builds a HTML email content
*
* @param {string} sender name
* @param {string} recipient name
* @return {string} returns a string
*
*/
function BuildEmailContentFromTemplate (senderName, recipientName){
return `
<!DOCTYPE html>
<html>
<head><title>Invitation</title></head>
<body>
<div>
<h3>Dear ${recipientName},</h3>
<p> <b>I am holding the wildest party</b>,
<br>
Please come by my place at 7 for drinks, cake and chicken wings (and bring your dancing shoes!).
</p>
<p>Cheers!
<br>
${senderName}
</p>
</div>
</body>
</html>`;
}
exports=函数(changeEvent){
const sendGridApiUrl=”https://api.sendgrid.com/v3/mail/send";
//访问存储在Stitch Secret中的SendGrid API键值
const sendGridApiKey=“API_KEY”;
//访问文档的最新版本
var users=changevent.fullDocument;
//构建电子邮件数据
console.log('==>',JSON.stringify(用户));
var emailData=BuildEmailData(用户);
console.log('==>',JSON.stringify(emailData));
//访问默认http客户端并执行POST请求
返回context.http.post({
url:sendGridApiUrl,标题:{授权:[`Bearer${sendGridApiKey}`]},正文:emailData,encodeBodyAsJSON:true})
。然后(res=>{
console.log('-->',res.statusCode);//用于记录
});
};
/**
*此函数返回符合SendGrid API请求正文格式的JSON对象
*
*@param{object}插入的文档-JSON对象
*@return{object}返回一个JSON对象
*
*/
函数BuildEmailData(来宾){
var recipientEmail=”mail@gmail.com";
var recipientName=guest.name;
var senderName=“你的派对伙伴”;
var senderEmail=“秒_mail@gmail.com";
var subject=“邀请参加大型聚会”;
var emailData={
“个性化”:[
{
“致”:[
{
“电子邮件”:收件人电子邮件
}
],
“主体”:主体
}
],
“发件人”:{
“电子邮件”:senderEmail
},
“内容”:[
{
“类型”:“文本/html”,
“值”:BuildEmailContentFromTemplate(senderName,recipientName)
}
]
};
返回电子邮件数据;
}
/**
*此函数用于生成HTML电子邮件内容
*
*@param{string}发送方名称
*@param{string}收件人名称
*@return{string}返回一个字符串
*
*/
函数BuildEmailContentFromTemplate(senderName,recipientName){
返回`
邀请
亲爱的${recipientName},
我正在举办最疯狂的派对,
请7点到我家来喝饮料、吃蛋糕和鸡翅(带上你的舞鞋!)。
干杯!
${senderName}
`;
}