Firebase Javascript在运行函数

时间:2017-09-09 06:19:20

标签: javascript firebase

有没有办法在触发getDownloadURL选项之前检查存储是否存在?

这是我的代码。

var storagedpurl = firebase.storage().ref(firebaseUser.uid + '/profilePicture/' + "displaypicture"); //URL to get current user dp
storagedpurl.getDownloadURL().then(function(url) { //Download dp from storage and display in circle img tag
  var firebaseimageurl = url;
  document.querySelector('img').src = firebaseimageurl;
}).catch(function(error) {
  console.log(error.code);
});

enter image description here

如果我没有profilepicture的存储文件夹,我的控制台日志将继续显示我没有存储对象的错误。因此,如果存储对象存在,我希望它只运行该函数,是否可能?

2 个答案:

答案 0 :(得分:1)

如果存在与否,您必须下载以检查Firebase API以正确的错误回应,告诉您失败的原因。

使用catch块来处理错误:

.catch(function(error) {
  switch (error.code) {
    case 'storage/object_not_found': // <<< here you decide what to do when the file doesn't exist
      // File doesn't exist
      break;

    case 'storage/unauthorized':
      // User doesn't have permission to access the object
      break;

    case 'storage/canceled':
      // User canceled the upload
      break;

    ...

    case 'storage/unknown':
      // Unknown error occurred, inspect the server response
      break;
  }
});

可以使用完整的错误代码列表here

答案 1 :(得分:0)

据我所知,firebase存储设计的方式是用户请求只存在的文件。因此,不存在的文件必须作为错误处理

See this documentation for how to handle this errors in storage

否则,我建议您使用getDownloadUrl。反过来又返回下面的承诺,

storageRef.child("file.png").getDownloadURL().then(onResolve, onReject);
function onResolve(foundURL) {
   //stuff
}
function onReject(error) {
   console.log(error.code);
}