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

143
Visualizações
¿Cómo creo un campo de incremento automático único compuesto en mongoose?

Me gustaría crear un esquema en el que pueda establecer un nombre específico para un usuario, por ejemplo, un nombre para mostrar que muchas personas puedan tener, y al mismo tiempo permitir que las personas los agreguen en función de ese nombre. Mi solución es guardar ese nombre en un modelo con dos campos, uno de los cuales es el nombre en sí mismo, el segundo tiene una identificación que representa la cantidad de veces que se usa ese nombre actualmente.

 var DisplayName = new Schema({ account: { type: ObjectId, ref: 'Account', }, name: { type: String, trim: true, required: true, }, number: { type: Number, required: true, } });

es lo que tengo, pero me gustaría poder decir

 var displayName = new DisplayName({ name: 'name', account: req.user.id }); displayName.save();

y establecería automáticamente el campo para mí?

EDITAR: me doy cuenta de que no había suficientes detalles en la pregunta original:

Me gustaría usar los controladores integrados posteriores al guardado de mongoose para generar este campo para mí en la creación. No debe actualizarse después de su creación, solo debe configurarse la primera vez.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Puede usar una función como se muestra a continuación para hacer eso.

 function saveDisplayName(schema) { var query = DisplayName.find({name: schema.name}); query.then(function(results) { var userNumber = 1; if (results.length < 1) { return userNumber; } for (var i = 0; i <= results.length - 1; i++) { var result = results[i]; if (userNumber <= result.number) { userNumber = result.number + 1; } if (i == results.length - 1) { return userNumber; } } }).then(function(userNumber) { schema.number = userNumber; var displayName = new DisplayName(schema); return displayName.save(); }).then(function(data) { console.log('Data saved', data) }).then(null, console.log); }

about 4 years ago · Santiago Trujillo 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