微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从firebase存储下载json文件

如何解决从firebase存储下载json文件

让我重申我的问题。我有一个 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())
    })
},

解决方法

启动 Firebase 项目的步骤

打开 Firebase 控制台。 点击“创建新项目”。

  1. “创建项目”窗口打开。
  2. Firebase 控制台的开始屏幕随即打开。
  3. “输入应用详细信息”屏幕随即打开。
  4. 按照屏幕上的说明继续配置。
  5. 创建项目后检查服务器密钥。
  6. 暂时将服务器密钥保存在本地驱动器上。

现在我们已经安装了依赖项并创建了一个 Firebase 项目,只需创建一个 index.js 文件并粘贴以下代码。别着急,我们会详细查看代码,了解发生了什么。

,

这里是其他需要帮助解决此类问题的人的解决方案。

const storage = firebase.storage()
const storageRef = storage.ref()
const objectRef = storageRef.child(course.storageRef)
objectRef.getDownloadURL().then((url) => {
    axios.get(url).then((response) => {
        let activeCourse = response.data
        userActiveCourse.push(activeCourse)
    })
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。