【发布时间】:2021-02-05 14:50:05
【问题描述】:
让我重申我的问题。我有一个 vue.js 应用程序,可以将 json 文件上传到我的 firebase 存储中的存储桶中。我需要下载文件以在我的应用程序中使用,但是当我尝试从 firebase 存储下载 json 文件时,我收到“未捕获(承诺)未定义”错误。
我想做的是将文件下载回一个对象中以在我的应用程序中使用
这是我下载和读取文件的代码:
const storage = firebase.storage()
const storageRef = storage.ref()
const objectRef = storageRef.child('BUCKET/FILE_NAME.json')
objectRef.download(function (err, contents) {
if (!err) {
var jsObject = JSON.parse(contents.toString('utf8'))
console.log('jsObject ', jsObject)
}
})
更新:这是我的全部代码。我检查数据库是否有活动课程。如果找到,我想从存储中获取该课程并根据其内容构建我的对象。
getActiveCourse({ dispatch }, { cid, user }) {
return new Promise((res, rej) => {
let userActiveCourse = []
let archivedUserCourses = []
let currentCourseRef = db.collection('currentcourses')
currentCourseRef = currentCourseRef.where('cid', '==', cid)
currentCourseRef = currentCourseRef.where('user', '==', user.uid)
currentCourseRef.get().then(snapshot => {
if (!snapshot.empty) {
snapshot.forEach(doc => {
let course = doc.data()
course.id = doc.id
if (course.status == 'active') {
// WE FOUND AN ACTIVE COURSE. NOW LETS DOWNLOAD IT AND READ IT INTO AN ARRAY
const storage = firebase.storage()
const storageRef = storage.ref()
const objectRef = storageRef.child('BUCKET/FILE_NAME.json')
objectRef.download(function (err, contents) {
if (!err) {
var jsObject = JSON.parse(contents.toString('utf8'))
}
})
userActiveCourse.push(course.course)
} else {
archivedUserCourses.push(course.course)
}
})
}
}).then(() => {
dispatch('addUserActiveCourse', userActiveCourse)
dispatch('addArchivedUserCourses', archivedUserCourses)
res()
}).catch(() => rej())
})
},
【问题讨论】:
-
如果您发现未捕获的错误并将其记录下来,它是否会显示实际出错的任何内容?
-
@FrankvanPuffelen 我试过了,但它永远不会成功
-
你把错误的原因扔在这里了:
.catch(() => rej())。那应该是.catch((err) => rej(err))。 -
谢谢@FrankvanPuffelen 现在我看到 objectRef.download 不是一个函数。关于如何解决这个问题的任何想法?
标签: javascript firebase vue.js google-cloud-storage