Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

325
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!