Firebase database desde child component

Hola, alguien sabe si hay alguna diferencia en procedimiento de aplicar batch (en firebase) desde un componente padre a hacerlo desde un componente hijo? Entiendo que no , ya que se va directo a firebase en ambos casos, pero a mi no me sale hacerlo desde el hijo; entonces no sé si estoy interpretando mal.

Si no he entendido bien estas usando firebase en tu proyecto, así que independientemente del nivel de componente en el que uses estas funciones, debería de funcionarte firebase.

En el caso de que sigas con el fallo, comparte algo de código y te podemos echar una mano. :+1:

Hola @victorst, aquí te adjunto algo de mi código:

<template>
  ...
    <v-flex xs12 sm6>
       <v-select
        v-model="pedidoI.cantidad"
       :items="['1', '2', '3', '4', '5']"
        label="Cantidad"
        required
       ></v-select>                                                
     </v-flex>  
   ...
 <v-card-actions>
  <v-btn color="blue darken-1" flat @click="save">Guardar</v-btn>
 </v-card-actions>
</template> 

<script>
 import { db } from '@/firebase'
 import { mapMutations, mapState } from 'vuex'
 import uuidv4 from 'uuid/v4'

 export default {
    data: () => ({
        dialog3: false,
        productosid: [],
        pedidoTot: [],
        pedidoI: {
            cantidad: '',
            piid: '',
        },
    ...
     }),

 computed: {
        ...mapState('sesion', ['usuario']),       
    }, 

 methods: {
               ...mapMutations([ 'mostrarOcupado',...]), 
   save() {                
           this.mostrarOcupado({ titulo: 'Cargando Datos', mensaje: 'Cargando 
           datos...' })

                let batch = db.batch()
                let piid = uuidv4()

                let pedidoI= {
                    piid,
                    cantidad: this.pedidoI.cantidad,
                }

                batch.set(db.collection('usuarios').doc(this.usuario.uid)
                            .collection('comandas').doc(this.comanda.cid) 
                            .collection('pedidoTot').doc(pedidoI.piid), 
                             pedidoI)                

                try {
                    batch.commit()
                    this.pedidoTot.push(this.pedidoI)

                    this.mostrarExito('Se cargó la información exitosamente')
                }
                catch (error) {
                    this.mostrarError('Ocurrió un error cargando la 
                    información')
                }
                finally {
                    this.ocultarOcupado()
                }
                this.close()
        },
 ...
</script>

Cuando hago click en “save”, la app se detiene en el mapMutation (mostrar ocupado), y sale este error:

[Vue warn]: Error in v-on webpackinternal:/… handler: “FirebaseError: [code=invalid-argument]: Function CollectionReference.doc() requires its first argument to be of type non-empty string, but it was: “””

Este mismo procedimiento lo uso en el componente padre para guardar la colección “comandas” y ahí sí funciona. Qué crees que me esté faltando. Gracias.

Examinando tu código al parecer, uno de los parámetros que pasas al mapMutation parece estar vacio haciendo referencia al error que has puesto:

[Vue warn]: Error in v-on webpackinternal:/… handler: “FirebaseError: [code=invalid-argument]: Function CollectionReference.doc() requires its first argument to be of type non-empty string, but it was: “”” 

Puede ser que en tu componente padre el ámbito de las variables sea diferente al de sus hijos :thinking: .