如何在创建触发器上访问 Firebase 云函数数据库的值



>我创建了一个函数,用于在onCreate触发后发送电子邮件,但遇到了问题 尝试访问值后

exports.sendEmailConfirmation = functions.database
.ref('/contact')
.onCreate(async (snapshot, context) => {
  const val = snapshot.val();
  console.log(val);
  const mailOptions = {
  from: val.name,
  to: 'kris@gmail.com',
  title: val.message,
};
try {
  await mailTransport.sendMail(mailOptions);
  console.log(`New ${val.message ? '' : 'un'} message sent to:`, val.email);
} catch (error) {
  console.error('There was an error while sending the email:', error);
}
return null; 
});

未定义

新的联合国消息发送到:未定义

然后尝试控制台似乎有一个想要引用但随机的键

{ '-LuFhQVjr-T7UFYioi-d': 
 { email: 'Kris@gmail.com',
 message: 'Hello cloud function',
 name: 'Kris' 
 } 
}

尝试再次使用点差,但遇到更多问题功能未触发

我如何访问它?

看起来您正在尝试在 /contact 创建新节点时触发函数。在这种情况下,您希望在声明中包含新子节点路径的占位符:

exports.sendEmailConfirmation = functions.database
.ref('/contact/{pushid}')
.onCreate(async (snapshot, context) => {
  const val = snapshot.val();
  console.log(val);
  const mailOptions = {
    from: val.name,
    to: 'rferfe@gmail.com',
    title: val.message,
  };
  ...

最新更新