尝试将一组对象保存到 Firestore 并将其加载回来

Posted

技术标签:

【中文标题】尝试将一组对象保存到 Firestore 并将其加载回来【英文标题】:Trying to save an array of objects to Firestore and load it back 【发布时间】:2021-05-01 22:14:05 【问题描述】:

如何将对象数组保存到 Firestore 并重新加载?我收到此错误

未捕获的 FirebaseError:调用函数 DocumentReference.set() 无效数据。不支持的字段值:自定义对象(在 记录用户书籍/图书馆)

这是我将其保存到 Firebase 并在对 myLibrary 数组进行修改后稍后加载的代码。

let myLibrary = [];
let firestore = firebase.firestore();

let docRef = firestore.doc("userBooks/library");
saveLibrary = function () 
  docRef
    .set(
      userLibrary: myLibrary,
    )
    .then(function () 
      console.log("Library saved!");
    )
    .catch(function (error) 
      console.log("Got an error: ", error);
    );
;
saveLibrary()
getUpdate = function () 
  docRef.onSnapshot(function (doc) 
    if (doc && doc.exists) 
      const myData = doc.data();
      myLibrary = myData.userLibrary;
      console.log(myData.userLibrary);
    
  );
;

// Here I add multiple objects to the array myLibrary.

saveLibrary();
getUpdate();

【问题讨论】:

这能回答你的问题吗? Function DocumentReference.set() called with invalid data. Unsupported field value: a custom Budget object 【参考方案1】:

您似乎正试图在文档中存储一个空数组,然后开始监听更新?

在它里面有数据之前,我不会存储空数组,或者将它与样板数据一起存储。

在您的代码中,您在向其添加对象之前调用了“saveLibrary()”。我认为这就是导致问题的原因。

我还鼓励您在 .set() 函数中使用 merge:true,这样您就不会覆盖文档。 ref here

【讨论】:

以上是关于尝试将一组对象保存到 Firestore 并将其加载回来的主要内容,如果未能解决你的问题,请参考以下文章

我目前正在尝试通过将字符串重新定义为数字来将一组整数保存在 int 数组中,然后将其存储在数组中

如何仅通过一次调用将一组对象保存到猫鼬数据库?

如何将一组自定义结构保存到 plist swift

使用flutter将多张图片上传到firestore并获取它的下载URL并将所有URL保存到firebase

将一组指针投射到其他对象?

将图像存储在 Firebase Storage 中并将元数据保存在 Firebase Cloud Firestore(测试版)中