Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

327
Visualizações
updateDoc no acepta variable como nombre de campo

Uso la función updateDoc de fireStore. También uso VueJs como marco. Intento crear un documento anidado con la entrada del usuario (member_name) como nombre de campo. Sin embargo, sigo recibiendo el error "Palabra clave inesperada 'esto'. (42:20)". El problema es de esta sección.

 this.member_name: { name: this.member_name, task: 0, task_status: 0, }

¿Puedes ayudarme a resolverlo? A continuación se muestra el código completo

 <template> <div class="container shadow m-3 col-12"> <div class="d-flex justify-content-center m-2"> <h1>Add Member</h1> </div> <label for="member_name">Member name</label> <input class="form-control m-1" type="text" id="member_name" v-model="member_name"/> <label for="member_email">Member Email</label> <input class="form-control m-1" type="email" id="member_email" v-model="member_email"/> <div class="d-flex justify-content-center"> <button @click.prevent="submit" class="btn btn-primary col-6 m-2">Submit</button> </div> </div> </template> <script> import firebaseApp from '@/firebase.js' import { getFirestore } from "firebase/firestore" import { doc, updateDoc} from "firebase/firestore" const db = getFirestore(firebaseApp); import { getAuth, onAuthStateChanged } from "firebase/auth"; export default { name: "AddMember", components: { }, data(){ return{ email:"", project_name:"", member_name:"", member_email:"", } }, mounted(){ const auth = getAuth(); onAuthStateChanged(auth, (user) => { if (user) { this.email = user.email console.log(this.email) } else { console.log("Sorry") } }); }, methods: { async submit() { alert("Add new member successfully!") this.project_name = this.$route.query.project_name const projectDoc = doc(db, "projects", this.project_name); await updateDoc(projectDoc, { member_list: { this.member_name: { name: this.member_name, task: 0, task_status: 0, } }, }); } }, } </script> <style> </style>
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Puede usar la notación [] para usar el valor de la variable como el nombre de la propiedad:

 await updateDoc(projectDoc, { member_list: { [this.member_name]: { // 👈 name: this.member_name, task: 0, task_status: 0, } }, });

Aparte de eso: si desea agregar el miembro a la matriz de lista de miembros existente, member_list usar el operador array-union como se muestra en la documentación sobre la actualización de elementos en un campo de matriz .

about 4 years ago · Juan Pablo Isaza Relatório

0

Está intentando establecer un valor incorrecto para el documento. En este código:

 await updateDoc(projectDoc, { member_list: { this.member_name: { name: this.member_name, task: 0, task_status: 0, } }, });

la tercera línea debe declarar la estructura del objeto, pero está haciendo referencia a un valor, y eso está mal.

La forma correcta sería algo similar a esto:

 await updateDoc(projectDoc, { member_list: { member_name: { // <- or use whatever you want to define this object name: this.member_name, task: 0, task_status: 0, } }, });
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda