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

275
Visualizações
Esquema Mongo, matriz de cadenas con valores únicos

Estoy creando el esquema para un documento mongo y puedo hacer todo excepto evitar duplicados en una matriz que no sea de objetos.

Conozco addToSet, pero me refiero a Mongo Schema.

No quiero verificar la Actualización usando $addToSet, sino que quiero que esto sea parte de la validación de mi esquema.

Ejemplo a continuación.

 let sampleSchema = { name: { type: 'String', unique: true }, tags: [{ type: 'String', unique: true }] }

El fragmento anterior evita que el nombre tenga valores duplicados. Permite que las etiquetas se almacenen como una matriz de cadenas.

Pero... no puedo limitar la matriz para que sean cadenas únicas.

 { name: 'fail scenario', tags: ['bad', 'bad', 'array']}

Puedo insertar este registro que debería ser un escenario fallido.

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

const express = require('express'); const router = express.Router(); const mongoose = require('mongoose'); const _ = require('underscore'); let sampleSchema = new mongoose.Schema({ name: { type: 'String', unique: true }, tags: [{ type: 'String' }] }) sampleSchema.pre('save', function (next) { this.tags = _.uniq(this.tags); next(); }); const Sample = mongoose.model('sample', sampleSchema, 'samples'); router.post('/sample', function (req, res, next) { const sample = new Sample(req.body); sample.save() .then((sample) => { return res.send(sample); }) .catch(err => { return res.status(500).send(err.message); }) });
over 4 years ago · Santiago Trujillo Relatório

0

Llegué a la conclusión de que esto es imposible de hacer a través de Mongoose Schema.

El esquema JSON se hace así.

 let schema = { name: { type: 'string' } tags: { type: 'array', items: { type: 'string', uniqueItems: true } } }

Validaré con el esquema JSON antes de crear el documento Mongo.

over 4 years ago · Santiago Trujillo Relatório

0

Este método se basa en la respuesta de Med, maneja las referencias y se realiza completamente en la validación del esquema.

 let sampleSchema = new mongoose.Schema({ strings: [{type: 'String'}], references: [{type: mongoose.Schema.Types.ObjectId, ref: 'Reference'], }); sampleSchema.pre('save', function (next) { let sample = this; sample.strings = _.uniq(sample.strings, function(i) {return (i._id) ? i._id.toString() : i;}); sample.references = _.uniq(sample.references, function(i) {return (i._id) ? i._id.toString() : i;}); return next(); });
over 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