Soy nuevo en firebase en general y estoy tratando de escribir partes de una matriz en un documento y sus datos restantes en un documento en una subcolección. Esto es lo que he hecho:
let db = admin.firestore(); db.collection("User") .doc(fields.user) .collection("Address") .doc(fields.address) .set({ User: fields.user, Address: fields.address, }) .then( db.collection("User") .doc(fields.user) .collection("Address") .doc(fields.address) .collection("Orders") .doc(fields.ID) .set({ ID: fields.ID, });Mi mayor pregunta es si hay una mejor manera de hacer esto. Aquí es una pequeña muestra, pero para los casos puede ser muy largo. Gracias de antemano por cualquier ayuda.
si tiene todos los datos en la primera vez. puede crear su objeto con subcolecciones y luego configurarlo en una solicitud
var obj = { User: fields.user, Address: fields.address, Orders: { ID: fields.ID, } } db.collection("User").doc(fields.user).set(obj) .then(() => { console.log("Document successfully written!"); }) .catch((error) => { console.error("Error writing document: ", error); });A menudo prefiero construir caminos más largos usando la interpolación de cadenas, lo que llevaría a:
db.doc(`User/${fields.user}/Address/${fields.address}`) .set({ User: fields.user, Address: fields.address, }) .then( db.doc(`User/${fields.user}/Address/${fields.address}/Orders/${fields.ID}`) .set({ ID: fields.ID, });Aparte de eso, probablemente desee hacer esto en una escritura por lotes para que ambas escrituras tengan éxito o ninguna de ellas lo haga.