Tengo un esquema de este modo:esquema de documento Mangosta y validación
class Schemas
constructor: ->
@mongoose = require 'mongoose'
@schema = @mongoose.Schema
@EmployeeSchema = new @schema
'firstname': { type: String, required: true },
'lastname': { type: String, required: true },
'email': { type: String, required: true, index: { unique: true }, validate: /\b[a-zA-Z0-9._%+-][email protected][a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b/ },
'departmentId': { type: @schema.ObjectId, required: true }
'enddate': String,
'active': { type: Boolean, default: true }
@EmployeeSchemaModel = @mongoose.model 'employees', @EmployeeSchema
@DepartmentSchema = new @schema
'name': { type: String, required: true, index: { unique: true } }
'employees' : [ @EmployeeSchema ]
@DepartmentSchemaModel = @mongoose.model 'departments', @DepartmentSchema
Así que mi employees
vivo en una variedad de employee
documentos dentro de un department
Tengo varios department
documentos que tienen un número de employee
documentos almacenados en la matriz employees
.
Luego añade un nuevo department
pero no contenía employees
. Si luego intento agregar otro department
sin employees
, Mongoose produce un Duplicate key error
para el campo employee.email
que es un campo obligatorio. El campo employee.email
es obligatorio y único, y debe serlo.
¿Hay de todos modos alrededor de esto?
Gracias Johhny, no tenía conocimiento del comando _debug_, que es útil saber para la depuración futura. Tampoco era consciente de que Mongoose estaba creando 2 índices (realmente cuando solo pedí uno). Sabía que podía crear 2 colecciones diferentes y tener una _refer_ con la otra por medio de 'ObjectId', pero luego volví a un modelo relacional. Después de haber usado RDMS durante muchos años, quería utilizar una estructura incrustada que parece ser una buena opción para este modelo. Como solución de compromiso, supongo que podría referirme a una colección _email-address_ dentro del objeto empleado incrustado y crear un índice único que. –