我使用颤振创建集合> userid> collection>doc>subscollection。
因此,用户将创建一个项,该项将具有属性。所以我想为这些属性创建一个子集合。
这样我就可以提取与该项目相关的所有属性。
因此,项集合将包含很少的详细信息,然后属性子集合将具有其他详细信息。
项目是在一个页面中创建的,当用户单击create时,我会将它们带到属性页面。
因此,当他们单击“电梯”按钮时,我使用以下代码将文档id发送到属性页
var docId =FirebaseFirestore.instance.collection('items')
.doc(userud).collection('items').doc().id;
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) =>
properties(data: docId)));现在在属性页面中,我试图接收下面的文档id;
class properties extends StatefulWidget {
final data;
properties({Key? key, required this.data}) : super(key: key);
String user = FirebaseAuth.instance.currentUser!.uid;
@override
State<properties> createState() => _properties();
}然后,我使用以下方式加载它;
late final documentID;
void initState() {
super.initState();
documentID=widget.data;
}最后,要在属性中添加文档,请按照“电梯”按钮中的代码进行操作。
CollectionReference coll = FirebaseFirestore.instance.collection('items').
doc(user).collection('items').doc(data)
.collection('properties');它不是在items的doc下创建属性,而是创建一个与项并行的单独集合。
请帮帮忙。
发布于 2022-06-01 08:55:51
我用Firestore 9客户端库复制了您的案例,并且我能够在“城市”集合的文档下创建一个“properties”集合,而不是创建一个与“城市”平行的单独集合。
这就是我所实施的:
“collection-> doc-> collection-> doc->sub collection”,对我来说是cities-> 101(doc id)-> cities->id(doc id)->properties->(doc id)

以下是JS的工作代码,
import { initializeApp } from "firebase/app"
import {doc, setDoc, getFirestore,collection} from "firebase/firestore"
// For Firebase JS SDK v7.20.0 and later, measurementId is optional
const firebaseConfig = {
//your firebaseConfig
};
const app=initializeApp(firebaseConfig);
const db=getFirestore(app);
const cityRef = doc(collection(db, 'cities/101/cities'));
const id=cityRef.id;
const colRef=collection(db,`cities/101/cities/${id}/properties`)
const docRef=doc(colRef);
setDoc(docRef,{"name":"hawai"})
console.log(id);
// setDoc(cityRef, { capital: true }, { merge: true });https://stackoverflow.com/questions/72423084
复制相似问题