2017-01-09 1 views
1

У меня есть две схемы:Каков правильный способ использования населения мангуста? Настройка

var ClientSchema = new Schema({ 
    name: String 
}); 
module.exports = mongoose.model('Client', ClientSchema); 

И

var PlaceSchema = new Schema({ 
    client: {type: mongoose.Schema.Types.ObjectId, ref: 'Client'}, 
    address: String 
}); 
module.exports = mongoose.model('Place', PlaceSchema); 

Если я получить список мест, я могу заполнить клиент легко, как это:

Place.find({}).populate('client') 

Однако, если Я хочу получить список всех клиентов и всех их мест, как бы я сделал запрос для этого? Должен ли я просто пропустить все клиенты и найти места для него с Place.find({client:client._id), прежде чем возвращать ответ?

ответ

0

Эта структура данных будет работать только в одну сторону, PlaceSchema же относятся к ClientSchema но ClientSchema не имеют каких-либо ссылок на PlaceSchema, решение было бы определить ваш ClientSchema таким образом:

var ClientSchema = new Schema({ 
    name: String, 
    _address: [{type: mongoose.Schema.Types.ObjectId, ref: 'Place'}] 
}); 

Кажется, своего рода но это было бы намного проще для вашего дела.

0

Хорошо, если у вас есть несколько мест, у них будут свои собственные уникальные идентификаторы, и для каждого места, к которому подключен клиент, вы можете иметь массив placeId, вы можете push placeId к этому массиву каждый раз, когда клиент подключается к этому месту. '

var ClientSchema = new Schema({ 
    name: String, 
    _address: [{type: mongoose.Schema.Types.ObjectId, ref: 'Place'}] 
});` 

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

  • Нет связанных вопросов^_^