javascript - Nodejs 在 sequelize 上对两个表使用 JOIN

标签 javascript node.js sequelize.js

我正在尝试在 sequelize 上实现这个 mysql 命令,但就我是使用这个库的新手而言,我无法实现它

我想做这个sql命令:

SELECT * FROM users 
join users_contacts_lists on users_contacts_lists.mobile_number = users.mobile_number 
WHERE users_contacts_lists.user_id = 1

我创建数据库模式的模型:

'use strict';
var config = require('../config');

var User = config.sequelize.define('users', {
    id: {
        type: config.Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    password: {
        type: config.Sequelize.STRING
    },
    username: {
        type: config.Sequelize.STRING
    },
    mobileNumber: {
        type: config.Sequelize.STRING,
        field: 'mobile_number'
    },
    status: {
        type: config.Sequelize.STRING
    },
}, {freezeTableName: true});

var UsersContactsLists = config.sequelize.define('users_contacts_lists', {
    id: {
        type: config.Sequelize.INTEGER,
        autoIncrement: true,
        primaryKey: true
    },
    userId: {
        type: config.Sequelize.INTEGER,
        field: 'user_id'
    },
    mobileNumber: {
        type: config.Sequelize.STRING,
        field: 'mobile_number', defaultValue: 0
    }
}, {freezeTableName: true});

UsersContactsLists.belongsTo(ChannelsTypes, {foreignKey: 'user_id'});
User.hasMany(Channels, {foreignKey: 'id'});

User.sync();
UsersContactsLists.sync();

module.exports =
{
    users: User,
    usersContactsLists: UsersContactsLists
};

我该如何解决这个问题?提前致谢

最佳答案

您可以在这样的关系中定义目标键和外键:

User.belongsTo(UsersContactsLists, {targetKey:'mobileNumber',foreignKey: 'mobileNumber'});

然后你可以使用这个:

User.findAll({
    include: [{
        model: UsersContactsLists,
        where: {
            userId: 1
        }
    }]
})

关于javascript - Nodejs 在 sequelize 上对两个表使用 JOIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40728509/

相关文章:

javascript - jquery如何发布到php,同步

javascript - 如何从文本面板在 grafana 仪表板中设置时间范围

node.js - 如何处理来自 HTTP Post 的响应

node.js - Mongoose 中的 UpdateMany 不工作但直接在 mongodb 中工作正常

javascript - Bluebird 在与 Sequelize/MySQL 一起使用时显示损坏的堆栈跟踪

javascript - 如果一个模型在 Sequelize 中引用自身,如何让所有 child 或 parent 处于多对多关联中?

javascript - 如何通过 Chrome 的开发工具了解网站的 Javascript?

javascript - 无法解决我的 Express 应用中的 CORS 政策

node.js - 错误: Note.用户字段类型必须是输出类型但得到:[object Object]

mysql - 如何在 sequelize 的 sub-sub 子模型中添加条件,这会影响 findAndCountAll 中的父模型?