Javascript Sequilize.js-关联,2个表

Javascript Sequilize.js-关联,2个表,javascript,node.js,sequelize.js,Javascript,Node.js,Sequelize.js,使用的技术:Node.js、Express.js、Sequilize.js 我正试着连接两张桌子。有一个user表和一个color表 颜色属于用户,而用户可以拥有一种颜色 我的文件结构: My Project |__config |__db.js |__models |__user.js |__color.js |__routes |__index.js |__app.js 在我的user.js文件中: module.exports = function(sequelize,

使用的技术:Node.js、Express.js、Sequilize.js

我正试着连接两张桌子。有一个
user
表和一个
color

颜色
属于
用户
,而
用户
可以拥有一种颜色

我的文件结构:

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 */
    });
};
module.exports = function(sequelize, DataTypes) {
    return sequelize.define('color', {
        color: {
            type: DataTypes.STRING,
            allowNull: false
        }
    });
};
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
   });
});
在我的
color.js
文件中:

module.exports = function(sequelize, DataTypes) {
    return sequelize.define('user', {
        /* attributes, such as: username */
    });
};
module.exports = function(sequelize, DataTypes) {
    return sequelize.define('color', {
        color: {
            type: DataTypes.STRING,
            allowNull: false
        }
    });
};
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
   });
});
然后在
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;
现在是麻烦的开始。当有人创建新的
用户
帐户(使用POST请求)时,他们还必须选择
颜色
。因此,用户信息将进入
user
表,颜色信息将进入
color
表。。。但是我该怎么做呢?如何在创建阶段链接这两个表。以下是我到目前为止的情况

我的POST请求在我的
index.js
文件中是这样的:

module.exports = function(sequelize, DataTypes) {
    return sequelize.define('user', {
        /* attributes, such as: username */
    });
};
module.exports = function(sequelize, DataTypes) {
    return sequelize.define('color', {
        color: {
            type: DataTypes.STRING,
            allowNull: false
        }
    });
};
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
表中,但
color
表中的
userID
null。

问题已解决。在我创建新用户和颜色的地方,应该如下所示:

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
相同