2016-11-21 72 views
0

我試圖執行關於sequelize此mysql命令,但據我是新手使用這個庫,我不能執行該使用的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:無法讀取屬性'字段'的未定義 在新的屬於(/ Volum es/Home/Projects/Web/test/node_modules/sequelize/lib/associations/belongs-to.js:64:66)' –

+0

謝謝,我如何從'Users'和'UsersContactsLists'模型中選擇一些字段?例如'User'中的'id'和'UsersContactsLists'中的'updated_at'? –

+0

targetkey指的是目標模型,在這裏是UsersContactsLists,所以targetKey將是'updated_at',另一個是當前模型的foriegnKey,這裏是'id' – farhadamjady

1

擺弄一下,這個聲明做你想要的?

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