将文件引用添加到数据库

时间:2019-10-03 18:43:01

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

我想将上传的图像的图像参考添加到firestore数据库中。我的代码将图像上传到Firebase存储中,但没有将数据保存到数据库中。我收到错误消息:

未捕获的FirebaseError:函数DocumentReference.set()用无效数据调用。不支持的字段值:自定义je对象(在“字段图片”中找到)

正确的方法是什么?

请参见以下代码:

console.log("Initialisation Successful!");
var db = firebase.firestore();
var storageRef = firebase.storage().ref().child('Images');



function addExercise(){
    var exerciseName = document.getElementById("ename").value;
    var exercisePart = document.getElementById("body_part").value;
    var exerciseLevel = document.getElementById("elevel").value;
    var file = document.getElementById("eimage").files[0];

    var thisRef = storageRef.child(file.name);
    thisRef.put(file).then(function(snapshot) {
         console.log('done!' + thisRef );
      });



    db.collection("Exercises").add({
        Name: exerciseName,
        BodyPart: exercisePart,
        Level: exerciseLevel,
        Image: thisRef 

    })
    .then(function(){
        console.log("Data entered successfully!");
    })
    .catch(function(error){
        console.error("Error!", error);
    });
} 

1 个答案:

答案 0 :(得分:2)

您可能只想用thisRef.fullPath保存引用的完整路径,因为这是一个简单的字符串而不是完整的对象。

要稍后将其转换为您可以阅读的对象,可以执行以下操作:

firebase.storage().ref().child(fullPath)

这显然是假设存储桶没有更改-否则,您还需要存储存储桶名称。

在此处查看更多详细信息:https://firebase.google.com/docs/storage/web/create-reference