2015-02-06 2 views
1

Так что я пытаюсь выяснить численность населения и отношения в Mongoose/Mongoose. У меня есть Fixture, у которого будет много прогнозов. Если я хочу показать инструмент предсказания, я могу просто использовать метод заполнения, но что, если мне нужно показать все предсказания для светильника?MongoDB/Mongoose имеет много отношений

Это звучит достаточно просто, но, возможно, у меня еще есть голова SQL, пытаясь понять это. Легко ли это сделать, или я подхожу к нему неправильно? Вот мои модели -

var FixtureSchema = new Schema({ 
homeTeam: { 
    type: Number, 
    required: true, 
    ref: 'Team' 
}, 
awayTeam: { 
    type: Number, 
    required: true, 
    ref: 'Team' 
}, 
date: { 
    type: Date 
}, 
matchday: { 
     type: Number, 
     required: true 
} 
}); 

var PredictionSchema = new Schema({ 
goalsHomeTeam: { 
    type: Number, 
    required: true 
}, 
goalsAwayTeam: { 
    type: Number, 
    required: true 
}, 
fixture: { 
    type: Number, 
    ref: 'Fixture' 
}, 
user: { 
    type: Schema.ObjectId, 
    ref: 'User' 
} 
}); 

ответ

1

Вы должны сначала найти прибор вы хотите, то поиск через ваши предсказания и найти спички. У Монго нет «реверсного» населения, но написать собственное легко:

Prediction.find({fixture: fixture._id}, function(err, predictions) { 
    //do things with predictions 
}) 
+0

Спасибо, Грант. Моя проблема в том, что если я хочу получить массив приборов и заполнить все прогнозы для всех из них? Это возможно? –

+0

На самом деле нет простого и быстрого способа сделать это. Вы не можете «заполнить», потому что прибор не хранит ссылку на все его предсказания. Вы можете заполнить массивы _id, но это потребует, чтобы вы обновляли объект fixture каждый раз, когда вы создаете новое предсказание. Другим возможным решением является [асинхронная библиотека] (https://github.com/caolan/async). В частности, «каждая» функция. Прокрутите по приборам и для каждого из них найдите все предсказания и верните массив. –

+0

Хорошо здорово. Я считаю, что это решит мою проблему. Спасибо за помощь Грант. –

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