【问题标题】:How to use inner joins in sequilize如何在 sequelize 中使用内连接
【发布时间】:2015-04-02 08:03:54
【问题描述】:
SELECT v.vehicle_id,v.vehicle_model_id,u.user_id,u.first_name FROM user u INNER JOIN user_vehicle v ON u.user_id= v.user_id WHERE u.user_id=3

对于上述查询,我​​使用以下命令

 userModel.find({ where: {user_id: 3}, include: [userVehicleModel] }).success(function(user){
    console.log(user)
})

它给出错误:可能未处理错误:user_vehicle is not associated to user!

提前致谢。

【问题讨论】:

  • 错误信息告诉你出了什么问题——两个模型没有关联。你在 sequelize 中设置了关联吗?

标签: mysql node.js sequelize.js


【解决方案1】:

有一个很好的答案here

简单的工作解决方案:

'use strict';

var Sequelize = require('sequelize');
var sequelize = new Sequelize(/*database*/'test', /*username*/'test', /*password*/'test',
    {host: 'localhost', dialect: 'postgres'});

var User = sequelize.define('User', {
    firstName: {type: Sequelize.STRING},
    lastName: {type: Sequelize.STRING}
});

var Vehicle = sequelize.define('Vehicle', {
    brand: {type: Sequelize.STRING}
});

var firstUser;

User.hasMany(Vehicle, {constraints: true});
Vehicle.belongsTo(User, {constraints: true});

sequelize.sync({force: true})
    .then(function () {
        return User.create({firstName: 'Test', lastName: 'Testerson'});
    })
    .then(function (author1) {
        firstUser = author1;
        return Vehicle.create({UserId: firstUser.id, brand: 'Ford'});
    })
    .then(function () {
        return Vehicle.create({UserId: firstUser.id, brand: 'Toyota'})
    })
    .then(function () {
        return User.findAll({
            where: {id: 1},
            include: [Vehicle]
        });
    })
    .then(function displayResults(results) {
        results.forEach(function (c) {
            console.dir(c.toJSON());
        });
    })
    .then(function () {
        process.exit(0);
    });

【讨论】:

    【解决方案2】:

    对于 sequilize 中的一对多关联并获取记录,您只需要编写此查询。

    let getuserId = req.query.user_id;
    let foundUser await userModel.findOne({ 
          where: {user_id: getuserId },
          include: [ { model: userVehicleModel } ] })
     });
     if (foundUser) console.log(foundUser);
    

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 2019-04-22
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 2019-07-28
      • 1970-01-01
      相关资源
      最近更新 更多