我正在一个简单的网站上工作,所以我可以学习FireBase和Javascript。当我想要检索特定照片时,我遇到了一个问题。
function load(){
let ext = null;
var postRef = firebase.database().ref('posts/' + viewNumber +'/fileType');
postRef.on('value', function(snapshot) {
var value = snapshot.val();
if (value === null) {
return;
}
ext = value;
});
console.log(viewNumber);
console.log(ext);
var storage = firebase.storage();
var pathReference = storage.ref('posts/'+ viewNumber +'.'+ext);
pathReference.getDownloadURL().then(function(url) {
// Or inserted into an <img> element:
var img = document.getElementById('post');
img.src = url;
});
// A full list of error codes is available at
// https://firebase.google.com/docs/storage/web/handle-errors
};
由于某种原因,我第一次运行该函数,ext = null但第二次,它是正确的图像类型。当我更改viewNumber并再次调用load()时,它会做同样的事情,返回null然后第二次返回正确的扩展名。我以为我每次都可以运行两次这个功能,但我知道这不合适。有人有什么建议吗?
答案 0 :(得分:1)
试一试:
=index(inventory[qty], match(K6, inventory[description], 0))
唯一能确保来自firebase请求的数据存在的地方就在回调中。
看看这个article,了解js和回调是如何工作的。