es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo agregar una colección a un documento en Firestore programando?

Tengo una aplicación en la que, cuando el usuario se registra, creo una colección en mi base de datos con Firestore usando esta función.

const createUser = async ( collection , data ) => {
    //adding data to a collection with automatic id
     )
    await setDoc( 
      doc( firestore, collection, data.id) , data )

<pre><code>//console.log( ref.id )
</code></pre>

<p>}
<code>
Así que cuando el usuario se registra, creo una colección con un ID generado automáticamente haciendo esto:
</code>

const SignupHandler = ( email, password, username ) => {
    setSignupError(null)
    createUserWithEmailAndPassword( FBauth, email, password )
    .then( ( userCredential ) => { 
      createUser('users', {id: userCredential.user.uid, email:userCredential.user.email, displayName:username})
      console.log(username)
      console.log(userCredential)
      setUser(userCredential)
      setAuth( true )
    } )
    .catch( (error) => { setSignupError(error.code) })
  }

Ahora quiero crear un documento dentro de la colección de usuario llamada “tareas” y agregar un ID automático, un nombre y una fecha. ¿Cómo hago eso? He estado buscando y no encuentro la solución. La estructura de la base de datos sería: Colección usuarios – documento usuario (ID de usuario, nombre y correo electrónico) – colección “tareas” – documento de tarea (ID, nombre y fecha).

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para crear un documento dentro de la colección “tareas” del usuario con un identificador, nombre y fecha generados automáticamente, puedes utilizar el siguiente código:

    const createTask = async (userId, name, date) => {
      const userTasksRef = collection(firestore, "users", userId, "tasks");
      const newTaskRef = doc(userTasksRef); // Esto creará un nuevo documento con un identificador generado automáticamente
    
      await setDoc(newTaskRef, {name, date});
    }
    

    Luego puedes llamar a esta función dentro de tu función SignupHandler después de crear el usuario y pasar el id del usuario, el nombre de la tarea y la fecha:

    const SignupHandler = (email, password, username ) => {
      setSignupError(null);
      createUserWithEmailAndPassword(FBauth, email, password)
      .then((userCredential) => { 
        const userId = userCredential.user.uid;
        createUser('users', {id: userId, email:userCredential.user.email, displayName:username});
    
        createTask(userId, "Mi tarea", new Date().toISOString()); // agrega esta línea para crear una nueva tarea para el usuario
    
        setUser(userCredential);
        setAuth(true);
      })
      .catch((error) => { setSignupError(error.code) })
    }
    

    Esto debería crear un documento dentro de la colección “tasks” del documento del usuario con un identificador generado automáticamente, el nombre “Mi tarea” y la fecha de hoy.

Comments are closed.