Javascript Firebase函数:无法读取属性';用户ID';未定义的

Javascript Firebase函数:无法读取属性';用户ID';未定义的,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我正在尝试通过sendgrid发送电子邮件。火库触发器。我似乎无法从上下文中提取用户ID。有什么建议吗? exports.firestoreEmail=functions.firestore .document('users/{userId}') .onCreate((上下文)=>{ const userId=context.params.userId; const db=admin.firestore(); 返回数据库 .收集(“用户”) .doc(用户ID) .get() 。然后((do

我正在尝试通过sendgrid发送电子邮件。火库触发器。我似乎无法从上下文中提取用户ID。有什么建议吗?

exports.firestoreEmail=functions.firestore
.document('users/{userId}')
.onCreate((上下文)=>{
const userId=context.params.userId;
const db=admin.firestore();
返回数据库
.收集(“用户”)
.doc(用户ID)
.get()
。然后((doc)=>{
const user=doc.data();
常数msg={
致:user.email,
从:“,
主题:“新追随者”,
//自定义模板
模板ID:“d-1584AF76F10D475D8CC99D28E501CF9”,
替换包装器:[“{{,“}}”],
替换:{
名称:user.displayName
}
};
返回sgMail.send(msg);
})
。然后(()=>console.log(“电子邮件已发送!”)
.catch((err)=>console.log(err));

});
上下文
应该是函数的第二个参数。你把它命名为“上下文”并不重要——位置完全重要。第一个参数是新文档的DocumentSnapshot,因此即使不使用它,也必须将其名称作为第一个参数:

exports.firestoreEmail = functions.firestore
  .document('users/{userId}')
  .onCreate((snapshot, context) => {
    const userId = context.params.userId;

context
应该是函数的第二个参数。你把它命名为“上下文”并不重要——位置完全重要。第一个参数是新文档的DocumentSnapshot,因此即使不使用它,也必须将其名称作为第一个参数:

exports.firestoreEmail = functions.firestore
  .document('users/{userId}')
  .onCreate((snapshot, context) => {
    const userId = context.params.userId;

在堆栈溢出时,如果您发现答案有帮助,通常会使用左侧的按钮将其向上投票并将答案标记为正确。在堆栈溢出时,如果您发现答案有帮助,通常会使用左侧的按钮将其向上投票并将答案标记为正确。