2012-06-27 3 views
0

Итак, у меня есть схема с людьми и группами. Я хочу, чтобы человек мог быть связан с одним или несколькими людьми или группами. До сих пор у меня есть это:Как создать схему мангуста с набором из нескольких типов?

var PersonSchema = new Schema({ 
    name : String, 
}); 
var PersonModel = mongoose.model('Person', PersonSchema); 

var GroupSchema = new Schema({ 
    name : String, 
    members : [PersonSchema] 
}); 
var GroupModel = mongoose.model('Group', GroupSchema); 

Как добавить к PersonSchema набор из одной или нескольких групп и/или других людей?

ответ

0

Если у вас есть оба Persons и Groups коллекции в базе данных на основе этого, вы можете добавить массивы ObjectId рефов в PersonSchema захватить отношения человека с другими людьми или группами. Как и в:

var PersonSchema = new Schema({ 
    name : String, 
    people: [{ type: Schema.ObjectId, ref: 'Person' }], 
    groups: [{ type: Schema.ObjectId, ref: 'Group' }] 
}); 

Затем вы можете использовать поддержку Мангуста в populate следовать этим рефов всякий раз, когда вам нужно их полную информацию.

0

можно определить как:

var Relation = new mongoose.Schema({ 
RelationType:String, RefObjId: String //You can also take Schema.ObjectId 
}); 

var PersonObj = new mongoose.Schema({ 
name: String, 
OtherDetails: String, 
RefObjDetails:[Relation] 
}); 

Пример:

А (_id: 100) Человек связан с B (_id: 200) Человек и группе MyGroup (_id: 333).

JSON будет выглядеть следующим образом:

{ 
'_id':'100', 
'name': 'A', 
'OtherDetails': '', 
'RefObjDetails':[{'RelationType':'P', RefObjId:'200'},{'RelationType':'G', RefObjId:'333'}] 
} 
Смежные вопросы