技術:のNode.js、Express.js、Sequilize.jsSequilize.js - 協会、2つのテーブル
私は2つのテーブルを接続しようとしています。 user
テーブルとcolor
テーブルがあります。
color
Aはuser
に属し、user
は色を有することができます。
マイファイル構造:私はこれらのファイルを設定するところ
module.exports = function(sequelize, DataTypes) {
return sequelize.define('color', {
color: {
type: DataTypes.STRING,
allowNull: false
}
});
};
が続いdb.js
で、これは次のとおりです:私のcolor.js
ファイルで
module.exports = function(sequelize, DataTypes) {
return sequelize.define('user', {
/* attributes, such as: username */
});
};
:私のuser.js
ファイルで
My Project
|__config
|__db.js
|__models
|__user.js
|__color.js
|__routes
|__index.js
|__app.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
テーブルに入りますが、どうすればいいですか?作成フェーズでこれらの2つのテーブルをリンクするにはどうすればいいですか?以下は私がこれまで持っていたものです。
私の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
テーブルに配置されますが、color
テーブル内userID
はnull.