मैं बहुत की तरह एक स्कीमा है:नेवला दस्तावेज़ स्कीमा और सत्यापन
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
तो यह है कि मेरे employees
एक department
अंदर employee
दस्तावेजों की एक सरणी में रहते हैं मैं कई department
दस्तावेजों की एक संख्या है कि है सरणी में संग्रहीत employee
दस्तावेज़।
मैंने फिर एक नया department
जोड़ा लेकिन इसमें employees
नहीं था। यदि मैं के बिना department
जोड़ने का प्रयास करता हूं, तो मोंगोस employee.email
फ़ील्ड के लिए Duplicate key error
उत्पन्न करता है जो एक आवश्यक फ़ील्ड है। employee.email
फ़ील्ड आवश्यक और अद्वितीय है, और यह होना आवश्यक है।
क्या वैसे भी इस दौर में है?
धन्यवाद जोहनी, मुझे _debug_ कमांड से अवगत नहीं था, जो भविष्य में डीबगिंग के लिए जानना आसान है। न ही मुझे पता था कि मोंगोस 2 इंडेक्स बना रहा था (वास्तव में जब मैंने केवल एक के लिए पूछा था।) मुझे पता था कि मैं 2 अलग-अलग संग्रह बना सकता हूं और 'ऑब्जेक्ट आईडी' के माध्यम से दूसरे को एक _refer_ कर सकता हूं, लेकिन फिर मैं वापस आ गया हूं एक संबंध मॉडल। कई वर्षों तक आरडीएमएस का इस्तेमाल करने के बाद मैं एक एम्बेडेड संरचना का उपयोग करना चाहता था जो इस मॉडल के लिए एक अच्छा फिट प्रतीत होता है। एक समझौता के रूप में मुझे लगता है कि मैं एम्बेडेड कर्मचारी ऑब्जेक्ट के भीतर से _email-address_ संग्रह का उल्लेख कर सकता हूं और एक अद्वितीय अनुक्रमणिका बना सकता हूं। –