javascript - 将文件引用添加到数据库中

标签 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);
    });
} 

最佳答案

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

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

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

这显然假设存储桶没有改变——否则您还需要存储存储桶名称。

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

关于javascript - 将文件引用添加到数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58225145/

相关文章:

javascript - OpenLayer 3 - 修改 Cluster 层的特征

ios - 多个命令在新的 Firestore 版本中产生 gRPCCertificates.bundle 错误

android - 如何跳过 firestore 集合中的 null/空变量?

java - 如何在返回语句之前从 FirebaseFirestore 获取所有数据

javascript - 如何在不禁用表单元素的情况下禁用 jquery-UI 对话框中的文本选择

javascript - 无法使用 Ember API 套件更改模型数据

javascript - typeof typeof x 返回字符串而不是对象,因为 null 的类型是对象

java - Android Firebase - 卡未在 RecyclerView 和 NullPointerException 中显示

ios - 如果不在客户端以确保安全,我应该在哪里存储我的 FCM 服务器 key ?苹果?

android - Firebase - 如何授予 super 用户读写权限