मोंगोडीबी/मोंगोस में, मैं रिश्ते को कैसे परिभाषित करूं? मुझे लगता है कि मैंने देखा है कि कुछ तरीके हैं, लेकिन मुझे यकीन नहीं है कि मैं मतभेदों को समझता हूं या मैं किसका उपयोग करता हूं। मैं मोंगोस 3मोंगोस में रिश्ते और विदेशी कुंजी को समझना
मैंने Todo
और TodoList
मॉडल को परिभाषित किया है, जहां संबंध स्पष्ट है। तो डॉक्स http://mongoosejs.com/docs/documents.html निम्नलिखित, मैं परिभाषित किया है वर्गों की तरह:
# Todo.coffee
mongoose = require "mongoose"
todoSchema = mongoose.Schema
name: String
desc: String
dueOn: Date
completedOn: Date
module.exports = mongoose.model "Todo", todoSchema
# TodoList.coffee
mongoose = require "mongoose"
Todo = require "./Todo"
todoListSchema = mongoose.Schema
name: String
todos: [Todo.schema]
module.exports = mongoose.model "TodoList", todoListSchema
तब मैं कक्षाओं का परीक्षण करने की कोशिश की:
list = new TodoList
name: "List 1"
todos: [
{ name: "Todo 1", desc: "Hello", dueOn: new Date(2012,10,1), completedOn: new Date(2012,10,2) }
{ name: "Todo 2" }
{ name: "Todo 3", desc: "Hello 2", dueOn: new Date(2012,10,6), completedOn: new Date(2012,10,2) }
{ name: "Todo 4" }
]
#list.todos.push { name: "Todo 5" }
console.log "List", list
list.save (err) ->
if !err
TodoList.find {}, (err, lists) ->
console.log "TODOS"
console.log lists.length, lists
done(err)
else
console.log "ERROR!!!"
done err
जब मैं Todo.find()
मैं कुछ भी नहीं मिल करने की कोशिश है, तो मॉडल (Todo.coffee
) अनावश्यक है? ऐसा लगता है कि Todo
TodoList
में संग्रहीत है, ऐसे उपयोगकर्ता के रूप में जो मुझे परवाह नहीं है, लेकिन मुझे आश्चर्य है कि क्या प्रभाव हैं? उदाहरण के लिए। क्या दस्तावेज़ बहुत बड़ा हो जाएगा? 1 TodoList बहुत सारे Todos के साथ? क्या वो वजह बन रही हे? क्या होगा यदि मैं नेस्टेड टोडोस को अनुमति देता हूं (नहीं कि मैं समझने के लिए इसे करना चाहता हूं), तो क्या दस्तावेजों को अलग से स्टोर करना बेहतर है? मैं ऐसा कैसे करूं, अगर मैं चाहूं, और मैं इसे कब करूं?
मैंने एक और तरीका देखा, मोंगोस 2 में वास्तव में, अगर यह 3 में संभव है, तो घोंसला वाले दस्तावेज़ों के बजाय ObjectId
का उपयोग करने जैसा कुछ। हो सकता है कि इसे अलग से स्टोर किया जाए?
Schema.Types.ObjectId एक v2 अनुकूलता संस्करण है: यहाँ एक कुछ सरकारी डॉक्स कि उपयोगी हो सकता है है Schema.ObjectId; यह मुझे थोड़ी देर के लिए उलझन में था –