簡體   English   中英

Node.js將JOIN用於序列表上的兩個表

[英]Nodejs use JOIN for two tables on sequelize

我正在嘗試在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
    }
}]

擺弄了一下,這條語句是否可以滿足您的要求?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM