我正在尝试运行以下云函数:
exports.getUserData = functions.firestore
.document('UserData/{id}')
.onWrite(async (snap, context) => {
const uid = snap.data.id;
let uData;
console.log("onCreate called. uid="+uid);
await admin.auth().getUser(uid)
.then(function(userRecord) {
// See the UserRecord reference doc for the contents of userRecord.
console.log('Successfully fetched user data:', userRecord.toJSON());
uData = userRecord.toJSON();
})
.catch(function(error) {
console.log('Error fetching user data:', error);
});
await admin
.firestore()
.doc('UserData/${uid}')
.set({
userRecord : uData
});
return null;
});
我在控制台中看到,它部署得很好。但是在集合中添加/更新文档并不会触发该函数(日志中没有显示任何内容)。
2条答案
按热度按时间mctunoxg1#
有几件事,我看到了一些问题
UserData
集合时触发这个函数。如果是这种情况,您应该使用触发器onCreate
。onWrite
在每次更新、创建或删除文档时触发。“UserData/${uid}”是字符串,而不是模板字符串。使用反勾“非单引号”
id
参数jyztefdp2#
似乎通过做
您要将“UserData/{id}”中
{id}
通配符的值分配给uid
变量。为此,您应该使用
context
Object,如下所示:就像在文档中解释的那样。