如何通过Dart代码在Flutter Firebase中创建文档的Reference字段?
如何在Dart中为Cloud Firestore创建Reference类型字段
你之前的代码里,不管是传递ref.path还是手动拼接的路径字符串,本质都是传字符串,所以Firestore只会把它存成字符串字段,不是Reference类型。要创建真正的Reference字段,得直接传Firestore SDK提供的DocumentReference实例。
修正后的代码如下:
CollectionReference<Object?> referenciaCategoriasFavoritas = bbdd.collection('/usuarios/${docUsuario.id}/categoriasFavoritas'); listaCategoriasFavoritas.forEach((idCategoria) { var docCategoriaFavorita = referenciaCategoriasFavoritas.doc(); // 根据分类ID获取对应的文档引用对象 DocumentReference<Object?> categoriaRef = bbdd.collection('categorias').doc(idCategoria); // 直接将引用对象作为字段值存入 var jsonCategoriaFavorita = {'idCategoria': categoriaRef}; docCategoriaFavorita.set(jsonCategoriaFavorita); });
需要注意的是:
- 核心操作是用
bbdd.collection('categorias').doc(idCategoria)拿到目标分类文档的引用对象,而不是取它的路径字符串。 - 当你把
DocumentReference实例作为字段值传给set()方法时,Firestore会自动识别并创建Reference类型的字段。
执行代码后,去Cloud Firestore控制台查看categoriasFavoritas子集合的文档,就能看到idCategoria字段的类型已经变成「Reference」了。
内容的提问来源于stack exchange,提问作者nurilu jaja
相关产品推荐
相关产品推荐

