如何在 sequelize 中使用内连接

How to use inner joins in sequilize

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)
})

它给出了 error:Possibly 未处理的错误:user_vehicle 未关联到用户!

提前致谢。

有一个很好的答案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);
    });

对于sequelize中的一对多关联和获取记录你只需要写这个查询。

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