【问题标题】:Pulling Sequelize Info from multiple tables从多个表中提取 Sequelize Info
【发布时间】:2016-06-18 22:50:01
【问题描述】:

我对新的 sequelize 很陌生,但我正在尝试弄清楚如何从多个表(Place 和 Review 表)中提取 sequelize 信息并将它们呈现在同一页面上。 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});
  });

});

【问题讨论】:

    标签: mysql node.js express sequelize.js


    【解决方案1】:

    根据您的 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...
    });
    

    【讨论】:

    • 谢谢,这是解决我遇到的问题的好方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2022-01-14
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    相关资源
    最近更新 更多