Объединение двух моделей в Sails.js

#javascript #mongodb #sails.js #ejs

#javascript #mongodb #sails.js #ejs

Вопрос:

У меня проблемы со связыванием двух моделей в sails. У меня было две модели ‘Singer’ и ‘Country’. В модели ‘Singer’ у меня был атрибут ‘singer_country’, который означает идентификатор модели ‘Country’. Моя проблема в том, что я могу получить атрибут ‘country_name’ в модели ‘Country’, когда я показываю все свойства singer. Я не знаю, как это сделать. Ниже приведен мой код: Моя модель ‘Singer’

  module.exports = {

attributes: {
singer_name:{
    type: 'string',
    required: true,
    size: 50
},
singer_realname:{
    type: 'string',
    size: 50
},
singer_gender:{
    type: 'string',
    enum: ['Male', 'Female'],
    defaultsTo: 'Male'
},
singer_brithday:{
    type: 'int'
},
singer_image:{
    type: 'string'
},
singer_description:{
    type: 'string'
},
singer_country:{
    type: 'string'
}

}
};
  

Моя модель «Country»:

   module.exports = {

attributes: {
country_name: {
    type: 'string'  
}
}
};
  

Мой метод отображения свойств singer:

 index: function(req, res, next){
    Singer.find().exec(function foundSinger(err, singerObj){
        if(err) return next(err);   
            res.view({
                singers: singerObj,
        });     
    });
},
  

Моей базой данных является MongoDB, я использую sails beta 0.10 rc8. Спасибо за помощь.

Ответ №1:

 singer_country:{
    model: 'Country'
}

Singer.find().populate('singer_country').exec(function foundSinger(err, singerObj){
    if(err) return next(err);   
        res.view({
            singers: singerObj,
    });     
});
  

Комментарии:

1. возвращает ошибку: «TypeError: Object [объект object] не имеет метода ‘populate'»

Ответ №2:

Здесь есть много других переменных, но если ваша ассоциация является взаимно однозначной, то ваш атрибут singer_country должен быть чем-то вроде

 singer_country: {model: 'country'}
  

https://github.com/balderdashy/waterline-docs/blob/master/associations.md