Firebase函数:无法读取未定义的属性“ userId”

时间:2020-04-21 22:20:28

标签: javascript firebase google-cloud-firestore

im试图通过sendgrid发送电子邮件。火警触发器。我似乎无法从上下文中获取userId。有什么建议? Image link to error message

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

    return db
      .collection("users")
      .doc(userId)
      .get()
      .then((doc) => {
        const user = doc.data();
        const msg = {
          to: user.email,
          from: "<myEmail>",
          subject: "New Follower",

          // custom templates
          templateId: "d-1584af76f10d475d8cc99d28e5501cf9",
          substitutionWrappers: ["{{", "}}"],
           substitutions :{
               name: user.displayName
           }
        };
        return sgMail.send(msg);
      })
      .then(() => console.log("email sent!"))
      .catch((err) => console.log(err));
  });

1 个答案:

答案 0 :(得分:2)

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

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