Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

279
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda