簡體   English   中英

如何將Firebase存儲鏡像url保存到firebase數據庫中?

[英]How to save Firebase Storage image url to firebase database?

如何將上傳到 Firebase 存儲的圖像保存到 Firebase 數據庫中的 url?

當下面的代碼運行時,我得到這個錯誤:

未捕獲(承諾)FirebaseError:Function DocumentReference.set() 使用無效數據調用。 不支持的字段值:未定義(在文檔 users/HNJr68ZYXJXbA7v9n2jSHscXwSp1 的字段 pfpURL 中找到)在新的 ui ( 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在 Gf ( 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在 Fr ( 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在 od.set ( https : //www.gstatic.com/firebasejs/7.17.1/firebase-fir estore.js:1:263206 )

HTML:

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

記者:

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,
        
        })
    })
})
});

您在回調中第二次調用getDownloadURL() ,它將正確的下載 URL 替換為 promise。

解決方案是重用傳遞給then()url

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM