2014-04-17 2 views
0

У меня есть схемы в моем приложении node.js express - Пользователь и доставка.Mongoose: совокупность, связанная со ссылочным поддоменом

var User = new Schema({ 
    name: {type: String}, 
    addresses: [ 
     { 
      city: {type: String}, 
      address: {type: String}, 
     } 
    ], 
}); 

Я не могу ссылаться на пользователь addresses поддокумента из address поля Схемы Delivery, так address поле хранит поддокумент-х _id.

var Delivery = new Schema({ 
    time: {type: String}, 
    address: {type: String} // this field references to User schema's address subdocument 
}); 

Так как я могу заполнить address поле в Delivery схеме?

Delivery.findOne(/*here is condition*/).populate({path: 'address', model: 'User.addresses'}); 

ответ

0

Попробуйте это:

var Address = new Schema({ 
    city: {type: String}, 
    address: {type: String} 
}); 
var AddressModel = mongoose.model('AddressModel', Address); 

var User = new Schema({ 
    name: {type: String}, 
    addresses: [Address], 
}); 

var Delivery = new Schema({ 
    time: {type: String}, 
    address: { 
     type: Schema.ObjectId, 
     res: 'Address' 
    } 
}); 

Тогда:

Delivery.findOne(/*here is condition*/).populate('address')... 
+0

Это не работает, адрес просто становится пустым, без каких-либо ошибок. Каждая схема хранится в отдельных файлах - 'user.js' и' delivery.js'. – user3215609

+0

@ user3215609 У MongoDB нет объединений, поэтому вам нужно вручную загрузить данные из другой коллекции. Или сохраните адреса в специализированной коллекции, чтобы ссылаться на них. – oaleynik

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