2016-03-05 30 views
2

我对新的续集很新,但我试图弄清楚如何从多个表(放置和查看表)中提取后续信息并将它们呈现在同一页面上。 Review表有一个User Id和一个Place Id。我试过以下代码的原始查询和不同变体,无济于事。我应该在这种情况下使用什么样的语法?从多个表中拉取续集信息

User.hasMany(Review); 
Review.belongsTo(User); 

User.hasMany(Place); 
Place.belongsTo(User); 

Place.hasMany(Review); 
Review.belongsTo(Place); 



app.get('/place/:category/:id', function(req, res){ 
    var id = req.params.id; 
    Place.findAll({ 
    where : {id : id}, 
    include: [{ 
     model: [Review] 
    }] 
    }).then(function(reviews){ 
    res.render('singular', {reviews}); 
    }); 

}); 

回答

3

从您的API路线定义,我想你想显示基于位置ID的地点评价。

那么,要实现这一点,你可以在你的桌子协会评为

Places.hasMany(Reviews); 
Users.hasMany(Reviews); 

Review.belongsTo(Places); 
Review.belongsTo(Users); 

现在,在此基础上关联模型,你可以这样进行查询:

Places.findById(req.params.id, { 
    include: [{ 
     model: Reviews, 
     required: false, 
     include: [{ 
      model: Users, 
      required: false 
     }] 
    }] 
}).then(function(place) { 
    // The rest of your logic here... 
}); 
+0

由于这是一个伟大的解决我遇到的问题。 – Bruno