2017-03-12 40 views
0

用到的技術:Node.js的,Express.js,Sequilize.jsSequilize.js - 協會,2個表

我試圖連接兩個表。有一個user表和一個color表。

color屬於useruser可以具有一個顏色。

我的文件結構:

My Project 
|__config 
    |__db.js 
|__models 
    |__user.js 
    |__color.js 
|__routes 
    |__index.js 
|__app.js 

在我user.js文件:

module.exports = function(sequelize, DataTypes) { 
    return sequelize.define('user', { 
     /* attributes, such as: username */ 
    }); 
}; 

在我color.js文件:

module.exports = function(sequelize, DataTypes) { 
    return sequelize.define('color', { 
     color: { 
      type: DataTypes.STRING, 
      allowNull: false 
     } 
    }); 
}; 

然後在db.js這是我配置這些文件:

const db = {}; 

db.sequelize = sequelize; 
db.Sequelize = Sequelize; 

db.user = sequelize.import('../models/user.js'); 
db.color = sequelize.import('../models/color.js'); 


db.color.belongsTo(db.user); 
db.user.hasOne(db.color); 

module.exports = db; 

現在是麻煩開始的地方。當有人創建新的user帳戶(使用POST請求)時,他們還必須選擇color。所以用戶信息將進入user表格,顏色信息將進入color表格......但我該怎麼做?在創建階段如何鏈接這兩個表。以下是我到目前爲止。

我的POST請求是這樣的,我index.js文件:

const express = require('express'); 
const router = express.Router(); 
const db = require('../config/db'); 

router.post('/createNewUser', function(req, res) { 
    const username = req.body.username 
    const color = req.body.color 

    db.user.create({ 
     username: username 
     color: color 
    }, { 
     include: db.color 
    }).then(function(result) { 
     //do something 
    }).catch(function(err) { 
     //in case of error 
    }); 
}); 

創建表工作正常(所有的配置代碼是在app.js文件,這裏不包括在內)。表格被創建;用戶名被放入user表和顏色被放置在color表,但在coloruserIDnull.

回答

0

好問題就迎刃而解了。在我創建新用戶和顏色的情況下,它應該看起來像這樣:

router.post('/createNewUser', function(req, res) { 
    const username = req.body.username 
    const color = req.body.color 

    db.color.create({ 
     color: color 
     user: { 
      username: username 
     } 
    }, { 
     include: [db.color] 
    }).then(function(result) { 
     //do something 
    }).catch(function(err) { 
     //in case of error 
    }); 
}); 

這會將兩個錶鏈接在一起;它會自動在color表中創建一個名爲userID的表,該表的值與user表中的id的值相同。