0

我正在使用 angularfire 和 firebase firestore 数据库将图像数据保存在数据库中。节省100%。

我的数据嵌套如下:

图片集

  • 画廊 ID
    • 图像标识
      • 姓名
      • 小路
    • 图像标识
      • 姓名
      • 小路
  • 画廊 ID
    • 图像标识
      • 姓名
      • 小路

有时我需要更新数据库中的特定图像对象,但是,当我尝试更新图像对象/文档时,我收到以下错误:

Invalid document reference. Document references must have an even number of segments, but images/yuEXbpYWqE4AUfmRCxIu/JvLzEANRFlupuUxYXNii has 3

这是我用户的代码:

this.afs.doc('images'+'/'+galleryId+'/'+imageId+'/').update({"name": upload.name,"path": upload.url});

我也试过:

this.afs.doc('images').collection(galleryId).doc(imageId).update({"name": upload.name,"path": upload.url});

我也试过:

 this.afs.collection('images'+'/'+galleryId).doc(imageId).update({"name": upload.name,"path": upload.url});

然后我得到一个类似的错误,这次只是引用了集合:

 Invalid collection reference. Collection references must have an odd number of segments, but images/AHcWODRgsespIExQnJae has 2

当我尝试更新数据库中的其他集合时,它工作正常,但是,它们仅嵌套 2 级。似乎当您嵌套了 3 个级别时,就会出现问题。

请帮忙

4

1 回答 1

1

您不能将一个文档直接嵌套在另一个文档下。您必须相应地构建您的嵌套:集合 - 文档 - 集合 - 文档 - 等等。Firestore 路径始终以集合开头。

this.afs.doc('images/'+galleryId + '/images/' + imageId).update({"name": upload.name,"path": upload.url});

我建议阅读 firestore 文档,因为这是 firestore 的一个基本方面:https ://firebase.google.com/docs/firestore/

于 2018-10-12T16:59:43.930 回答