2011-10-18 8 views
53

У меня есть 2 схемы, Custphone и Subdomain. Custphonebelongs_to a Subdomain и Subdomainhas_manyCustphones.Node.js - Создание отношений с Mongoose

Проблема заключается в создании отношений с использованием Mongoose. Моя цель - сделать custphone.subdomain и получить субдомен, к которому принадлежит Custphone.

я это в моих схемах:

SubdomainSchema = new Schema 
    name : String 

CustphoneSchema = new Schema 
    phone : String 
    subdomain : [SubdomainSchema] 

Когда я печатаю результат Custphone я получаю это:

{ _id: 4e9bc59b01c642bf4a00002d, 
    subdomain: [] } 

Когда Custphone результат имеет {"$oid": "4e9b532b01c642bf4a000003"} в MongoDB.

Я хочу сделать custphone.subdomain и получить объект субдомена custphone.

+0

Что вопрос? –

+0

@Mike Robinson - я хочу сделать custphone.subdomain и получить объект субдомена custphone. – donald

ответ

117

Похоже, вы ищете новую функциональность populate в Mongoose.

Использование приведенного выше примера:

var Schema = mongoose.Schema, 
    ObjectId = Schema.ObjectId; 

SubdomainSchema = new Schema 
    name : String 

CustphoneSchema = new Schema 
    phone : String 
    subdomain : { type: ObjectId, ref: 'SubdomainSchema' } 

subdomain поле будет обновляется с «_id», такие как:

var newSubdomain = new SubdomainSchema({name: 'Example Domain'}) 
newSubdomain.save() 

var newCustphone = new CustphoneSchema({phone: '123-456-7890', subdomain: newSubdomain._id}) 
newCustphone.save() 

Чтобы действительно получить данные из subdomain поля вы собираетесь необходимо использовать несколько более сложный синтаксис запроса:

CustphoneSchema.findOne({}).populate('subdomain').exec(function(err, custPhone) { 
// Your callback code where you can access subdomain directly through custPhone.subdomain.name 
}) 
+2

Это все еще актуально для новейшей версии мангуста? –

+0

Спасибо. Это помогло мне с некоторой конфигурацией с 'mongoose # 3.8.3'. – Seiyria

+1

Возможно, он изменился, но запуск не существует. Мне пришлось использовать .exec! – Gabriel

Смежные вопросы