context.params.userId undefined



我正在尝试创建一个firebasecloud函数。我想从context.prarams获取userId,但当我访问它时;用户ID 1:未定义";在函数日志中。

这是函数的代码:

exports.onTrxnCreate = functions.firestore.document('/trxns/{trxnId}').onCreate(async(snap, context) => {
const userId = context.params.userId;
console.log('UserID 1: ' + userId);
/*const userId = snap.ref.parent.parent.Id; THIS DIDN'T WORK */

console.log('A new transaction has been added');

const getUserDeviceToken = await db.collection('device').doc(userId).get();
const deviceTokens = getUserDeviceToken.data().deviceToken;
console.log('DeviceID: ' + deviceTokens);

if (deviceTokens == null) {
return console.error('No device tokens found');
}
let title = "Transaction added";
let body = "A new transaction has been added";
const payload = {
notification: { title: title, body: body},
data: {click_action: 'FLUTTER_NOTIFICATION_CLICK' }
};
const response = await admin.messaging().sendToDevice(deviceTokens, payload);
if (response.error) {
console.error("Error sending message: ", response.error);
} else {
return console.log("Message sent successfully!");
};
return Promise.all(console.log('End of function'));
});

如何获取此函数的userId?

如何获取此函数的userId?

我想你指的是创建触发云函数的Firestore文档的用户的userId。

默认情况下,这在Firestore触发的云函数中是不可能的。另一方面,具有auth属性的实时数据库也是可能的。

如果你想获得创建Firestore文档的用户的userId,你应该:

  1. 将用户ID保存在文档中并通过snap.data().userId;获取,或者
  2. 使用userId作为Firestore文档ID,然后可以通过params属性获取它,因为它是Firestore文档路径中通配符的值之一

因此,在您的情况下,context.params.userId未定义是正常的,因为Firestore文档路径中没有userId通配符。

相关内容

  • 没有找到相关文章

最新更新