2015-03-17 3 views
0

Я знаю, что этот вопрос был поднят много раз до этого, и что Mongo не имеет точного соединения «имеет много», но пока не удалось установить связи между двумя схемами. Вот что у меня есть:У Mongoose есть много отношений между Schemas

пользователь модель (user.js)

var userSchema = mongoose.Schema({ 

    posts: { 
     _id : { type: Schema.Types.ObjectId, ref: 'Post' }, 
     title : {type: String, ref: 'Post'} 
    }, 

    facebook   : { 
     id   : String, 
     token  : String, 
     email  : String, 
     name   : String 
    } 
}); 

и сообщения схема (post.js)

var meetingsSchema = mongoose.Schema({ 
    title: String, 
    description: String, 
    _owner: { type: Schema.Types.ObjectId, ref: 'User' }, 
    ownerName: { type: String, ref: 'User' }, 
    created_at: { type: Date, default: Date.now }, 
}); 

Я использую население схемы и отлично работает с постом: каждый из них имеет владельца. Однако это не так хорошо работает с пользователями. Я хочу получить список пользователей, показывая сообщения, которые принадлежат им. В routes.js я определил вызов апи к базе данных

app.get('/api/users', function(req, res) { 
    User.find(function(err, users) { 
     if (err) 
      res.send(err) 
     res.json(users); 
    }).populate('posts._id', 'posts.title'); 
}); 

Но, как в скорлупе и (не удивительно) на стороне клиента user.posts возвращает пустой массив. Как я могу привязать эти две модели правильно?

ответ

0

Просто дикая догадка.

  1. Вы User.find все пользователи.
  2. Затем вы возвращаете их все.
  3. Затем вы заполняете почтовый идентификатор и заголовок, который уже слишком поздно, потому что вы уже отправили пользователей.

См. Примеры численности населения here.

Кроме того, я ожидаю, что свойство .posts будет массивом, а не только плоским объектом. См. comments Недвижимость here.

0

Ваша ссылка на «сообщения» для пользователя не является массивом? Так что только связь одного сообщения?

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