我有一个包含2个字段的文档:field1,field2(为简单起见,更改了名称)。
我正在从一个云函数中尝试从field1获取值。该函数不是该特定文档的触发器,我得到的值是这样的:
const user_collection = db.collection("user")
const photoName = user_collection.doc(userid).field1
但是,我在undefined
中得到的回报。我尝试使用data()或get()方法,但最终出现错误...is not a function
。在文档或SO中找不到任何可以帮助我从文档中获取字段值的东西。
关于如何提取该字段的任何建议?
编辑:
exports.onUserDeletion = functions.auth.user().onDelete((user) => {
const userid = user.uid
const photoName = user_collection.doc(userid).photo //<--- this is "undefined"
const filePath = `user_photo/${photoName}`
const file = bucket.file(filePath)
console.log(`userid: ${userid} photoName: ${photoName} filePath: ${filePath} file: ${file}`)
return highscore_collection.doc(userid).delete().then(user => {
return user_collection.doc(userid).delete().then(user => {
return file.delete()
})
})
})
答案 0 :(得分:2)
您应该执行以下操作:
exports.deleteUser = functions.firestore.document('user/{userID}').onDelete((snap, context) => {
const deletedValue = snap.data().photo;
});
来自docs:
使用带有通配符的
onDelete()
函数删除文档时,您也可以触发函数。
在您的代码中,您使用的是authentication trigger
,这就是为什么您无法访问文档中的photo
字段的原因。
来自docs:
onDelete
每次删除Firebase身份验证用户时都会触发的事件处理程序。
onDelete()
的参数类型为UserRecord
。您可以在此处检查UserRecord
的属性:
https://firebase.google.com/docs/reference/functions/functions.auth.UserRecord.html
答案 1 :(得分:1)
用户已被删除。这就是为什么无法从数据库中获取它的原因。
exports.onUserDeletion = functions.auth.user().onDelete((user) => {
const userid = user.uid
const photoName = user.photo //<--- this is "undefined"
const filePath = `user_photo/${photoName}`
const file = bucket.file(filePath)
console.log(`userid: ${userid} photoName: ${photoName} filePath: ${filePath} file: ${file}`)
return highscore_collection.doc(userid).delete().then(user => {
return user_collection.doc(userid).delete().then(user => {
return file.delete()
})
})
})