如何在firebase存储参考中使用变量



我构建了一个函数来获取指定ref的下载URL,可以在下面找到:

function download_file(val) {
//val = Uploads/Files/swxhlhae-tech-logo.png inside of the function because i have it logged..
console.log(val)
var storage = firebase.storage();
const value = 'Uploads/Files/' + val

storage.ref('Uploads/Files/swxhlhae-tech-logo.png').getDownloadURL().then(function(url) {


console.log(url)


}).catch(function(error) {
console.log(error)
});
}

编辑:

var databaseRef = firebase.database().ref('Uploads/Files/');
var rowIndex = 1;

databaseRef.once('value', function(snapshot) {
snapshot.forEach(function(childSnapshot) {
var childKey = childSnapshot.key;
var childData = childSnapshot.val();



//childKey
//childData.FirstName
var html = '<li class="collection-item">';
html += '<div class="row">';
html += '<div class="col s9">';
html += '<p class="collections-title">' + childData.FileName + '</p>';
html += '<p class="collections-content">' + 'Uploaded: ' + childData.Uploaded + '</p>';
html += '</div>';
html += '<div class="col s3">';
html += '<a href="#" onclick="download_file(this.title)" title=" '+ childData.DownloadName + '">' + '<span class="task-cat blue">Download</span></a>';
html += '<a href="#" title="' + childKey + '" onclick="delete_file(this.title)"><span id="' + childKey + '" class="task-cat red">Delete</span></a>';

html += '</div>';
html += '</div>';
html += '</li>';

document.getElementById('files').innerHTML += html;



});
});

编辑:上面的代码生成html,我做了它,所以它在按钮上创建了一个标题,当点击时,它获取按钮的标题值,然后它将(val(变量传递给上面的函数,然后从那里进行

基本上,当我使用上面的例子时,它写得很好。。。但当我使用一个名为(value(的变量时,它会告诉我有一个404文件不存在。。。但当我看到(value(变量和我在函数中键入的原始ref时。。。完全一样,为什么它不起作用?为什么我不能使用这个变量?

问题是onclick="download_file(this.title)"中的this.tile是在用户单击元素时求值的,此时this是不同的对象。修复此问题的最简单方法是在渲染HTML:时立即将正确的值注入childData.DownloadName

html += `<a href="#" onclick="download_file('${childData.DownloadName}')" title="${childData.DownloadName}"><span class="task-cat blue">Download</span></a>`;

最新更新