【问题标题】:How to save Firebase Storage image url to firebase database?如何将 Firebase 存储图像 url 保存到 firebase 数据库?
【发布时间】:2020-12-18 08:52:40
【问题描述】:

如何在 Firebase 数据库中保存上传到 Firebase 存储的图片的 url?

当下面的代码运行我得到这个错误:

未捕获(承诺)FirebaseError:使用无效数据调用函数 DocumentReference.set()。不支持的字段值:未定义(在文档 users/HNJr68ZYXJXbA7v9n2jSHscXwSp1 的字段 pfpURL 中找到) 在新用户界面 (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:52471) $f (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:177580) 在 Uf.ea (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:172230) 在https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:176225 在女朋友 (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:176263) 在https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:176376 在神父 (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:45658) 在 Bf (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:176351) 在 Mf (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:173339) 在 od.set (https://www.gstatic.com/firebasejs/7.17.1/firebase-firestore.js:1:263206)

HTML:

<div>
   <img id="profile-picture">
</div>

JS:

firebase.auth().onAuthStateChanged(function(user) {

var uid = firebase.auth().currentUser.uid

var fileButton = document.getElementById('choose-pfp');

fileButton.addEventListener('change', function(e) {

    var storageRef = firebase.storage().ref("profile_pictures/" + uid);

    var file = e.target.files[0];
    
    storageRef.put(file).then(function(snapshot) {

    window.alert("Profile picture has been uploaded!");



    storageRef.getDownloadURL().then(function(url) {
        document.querySelector('#profile-picture').src = url;

var url = storageRef.getDownloadURL();

        db.collection('users').doc(uid).set({
            pfpURL: url.value,
        
        })
    })
})
});

【问题讨论】:

    标签: javascript html firebase google-cloud-firestore firebase-storage


    【解决方案1】:

    您在回调中第二次调用getDownloadURL(),它将正确的下载 URL 替换为一个承诺。

    解决方案是重用传入then()url

    storageRef.getDownloadURL().then(function(url) {
        document.querySelector('#profile-picture').src = url;
    
        db.collection('users').doc(uid).set({
            pfpURL: url,
        })
    })
    

    【讨论】:

      猜你喜欢
      • 2021-03-14
      • 2017-08-10
      • 1970-01-01
      • 2019-05-07
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      相关资源
      最近更新 更多