I Have uno schema in questo modo:schema di documento Mongoose e validazione
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
Così che il mio employees
dal vivo in una serie di employee
documenti all'interno di un department
Ho diversi department
documenti che hanno un numero di employee
documenti memorizzati nell'array employees
.
Ho quindi aggiunto un nuovo department
ma non contiene employees
. Se poi tento di aggiungere un altro department
senza employees
, Mongoose produce un Duplicate key error
per il campo employee.email
che è un campo obbligatorio. Il campo employee.email
è obbligatorio e unico e deve essere.
C'è comunque intorno a questo?
Grazie Johhny, non ero a conoscenza del comando _debug_, che è utile sapere per il debugging futuro. Né sapevo che Mongoose stava creando 2 indici (in realtà quando ne chiesi solo uno.) Sapevo che avrei potuto creare 2 raccolte diverse e avere un _refer_ all'altro per mezzo di un 'ObjectId', ma poi sono tornato a un modello relazionale. Avendo usato RDMS per molti anni ho voluto utilizzare una struttura incorporata che sembra essere una buona misura per questo modello. Come compromesso, suppongo di poter fare riferimento a una raccolta _email-address_ all'interno dell'oggetto dipendente incorporato e creare un indice univoco. –