MongoDB/Mongoose에서 관계를 어떻게 정의합니까? 내가 본 몇 가지 방법이 있다고 생각하지만 차이점을 이해할 수 있는지, 언제 어느 것을 사용해야하는지 잘 모르겠습니다. 나는 몽구스 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
에 저장되어있는 것처럼 보이는데, 사용자가 신경 쓰지 않을 수도 있지만 그 의미는 무엇입니까? 예 : 문서가 너무 커질 것인가? Todo 목록이 너무 많습니다. 그게 중요합니까? 내가 중첩 된 Todos를 허용한다면 (이해를 돕기 위해서가 아니라), 별도로 문서를 저장하는 것이 더 나은가? 내가 그렇게 원한다면 나는 어떻게해야합니까? 언제 제가 그것을합니까?
Mongoose 2에서 다른 방법을 실제로 보았습니다. 3이 가능하다면 중첩 된 doc 대신 ObjectId
을 사용하는 것과 같습니다. 별도로 보관해야할까요?
Schema.Types.ObjectId는 V2 호환 버전이 있습니다 : 여기에 도움이 될 수있는 몇 가지 공식 문서입니다 Schema.ObjectId; 이것은 나를 당황하게했다. –