2016-11-21 2 views
0

Я пытаюсь реализации этой команды MySQL на sequelize, но, насколько я новичок использовать эту библиотеку я не могу реализующий чтоNodejs использовать JOIN для двух таблиц на sequelize

я хочу, чтобы сделать это команда 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 
}; 

, как я могу решить эту проблему? Заранее спасибо

ответ

2

вы можете определить целевой ключ и внешний ключ как в отношении, как это:

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

, то вы можете использовать это:

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

Спасибо человеку, к сожалению, я получаю эту ошибку 'TypeError: Не могу прочитать поле свойства 'неопределенного на новом BelongsTo (/ Volum es/Главная/Проекты/Web/test/node_modules/sequelize/lib/association/belongs-to.js: 64: 66) ' –

+0

Спасибо, как я могу выбрать некоторые поля из моделей' Users' и 'UsersContactsLists'? например 'id' из' User' и 'updated_at' из' UsersContactsLists'? –

+0

targetkey ссылается на целевую модель, которая здесь является списком UsersContactsLists, поэтому targetKey будет 'updated_at', а другой - foriegnKey текущей модели, вот здесь' id' – farhadamjady

1

Скрученный немного, делает ли это заявление то, что вы хотите?

User.findAll({ 
    include: [{ 
     model: UsersContactsLists, 
     where: { 
      userId: 1 
     } 
    }] 
Смежные вопросы