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

185
Visualizações
Validar el modelo de nodejs usando clases

Estoy tratando de crear un modelo para la aplicación NodeJS usando JavaScript y MySQL. Ahora, recibí un consejo para usar el patrón de construcción porque mi objeto se vuelve demasiado grande y no se puede leer. Por lo tanto, creé otra clase y dentro del constructor creé una instancia de la clase básica, como la vi en los tutoriales.

 // Basic class User { constructor(fname) { this.fname = fname; }; } // Builder for the user class module.exports = class UserBuilder { constructor(fname) { this.user = new User(fname); } setLname(lname) { this.user.lname = lname; return this; } setEmail(email) { this.user.email = email; return this; } setPassword(password) { this.user.password = password; return this; } setAge(age) { this.user.age = age; return this; } setGender(gender) { this.user.gender = gender; return this; } setAvatar(avatar) { this.user.avatar = avatar; return this; } setPhoneNumber(number) { this.user.number = number; return this; } build() { return this.user; } }

Mi primera pregunta es: ¿cómo puedo validar todos los argumentos? algunos de los argumentos no son obligatorios y isAdmin debe ser False por defecto.

Para verificar esto, creé una instancia básica para ver cómo se construye.

 const user = require('./models/user.js'); const User = new user('bob').setAge(22).build(); console.log(User);

Mi segunda pregunta es cómo puedo crear un método dentro de la clase para editar o eliminar el objeto e interactuar con la base de datos. ¿O debería estar en los controladores?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Probablemente no te entendí en algunas partes de tu pregunta. Pero lo intenté. Básicamente, esto hizo que la clase de constructores fuera mucho más pequeña al agregar nuevas propiedades. Ahora solo necesita proporcionar la clave y el valor para agregar algo al objeto en lugar de llamar a un método separado para ello.

Nota : el método de edit y remove no necesita llamar al método de build para devolver la clase de usuario base. Todas sus preguntas han sido respondidas en los comentarios del código.

 /// Basic class User { constructor(fname) { this._validate(fname); this.fname = fname; } _validate(param) { //what ever you wanna check before adding into object } } // Builder for the user class class UserBuilder { constructor(fname) { this.user = new User(fname); } addSomething(key, value) { if (typeof key !== "string") { //throw "Key provided is not a string." } key = key.toLowerCase(); if (key == "role") { this.user[key] = this.isAdmin(); return this; } this.user[key] = value; return this; } isAdmin() { // your way to check if its admin. /** * if(admin == true) { * return true; * } else return false; */ } edit(param, val) { if (!this.has(param)) { //throw } else { this.user[param] = val; //db operation to edit it. } return this.user; } /** * By delete Object I suppose delete a property. */ remove(param) { if (!this.has(param)) { //throw } else { delete this.user[param]; //db operation to remove it. } return this.user; } has(val) { return this.user[val] ? true : false; } build() { return this.user; } }; const userr = new UserBuilder("Vox"); console.log(userr.addSomething("age", 19).build()); console.log(userr.edit("age", 21)); console.log(userr.remove("age"));

Esto es lo que registró el código.

 User { fname: 'Vox', age: 19 } User { fname: 'Vox', age: 21 } User { fname: 'Vox' }
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