【发布时间】:2015-08-13 23:49:29
【问题描述】:
我正在使用 Node.js/Express 和 MySQL 和 Sequelize.js ORM 创建一个调查应用程序。
我无法正确设置 2 个模型之间的关系。我想在答案表中有问题的 qId 外键。
// define the Questions table
var Questions = sequelize.define('Questions', {
qId: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true},
question: Sequelize.STRING
}, {
timestamps: false
});
// define the Answers table
var Answers = sequelize.define('Answers', {
aId: { type: Sequelize.INTEGER, primaryKey: true, autoIncrement: true},
answer: Sequelize.STRING,
answer_count: { type: Sequelize.INTEGER, defaultValue: 0}
}, {
timestamps: false
});
// define one-to-many relationship
Questions.hasMany(Answers, {as: 'Answers', foreignKey: 'qId'});
Questions.sync({force: true}).then(function() {
// OPTIONAL: create a new question upon instantiating the db using sequelize
Questions.create({question: 'what is your language?'});
Questions.create({question: 'what is your drink?'});
console.log('created Questions table');
}).catch(function(error) {
console.log('error creating Questions table');
});
Answers.sync({force: true}).then(function() {
Answers.create({answer: 'python', qId: 1});
Answers.create({answer: 'javascript', qId: 1});
Answers.create({answer: 'ruby', qId: 1});
Answers.create({answer: 'c++', qId: 1});
Answers.create({answer: 'manhattan', qId: 2});
Answers.create({answer: 'cosmopolitan', qId: 2});
console.log('created Answers table');
}).catch(function(error) {
console.log('error creating Answers table');
});
但是当我做 MySQL 查询时:
select * from Questions, Answers where Answers.qId=2;
显示如下:
mysql> select * from Answers;
+-----+--------------+--------------+------+
| aId | answer | answer_count | qId |
+-----+--------------+--------------+------+
| 1 | python | 0 | 1 |
| 2 | javascript | 0 | 1 |
| 3 | ruby | 0 | 1 |
| 4 | c++ | 0 | 1 |
| 5 | manhattan | 0 | 2 |
| 6 | cosmopolitan | 0 | 2 |
+-----+--------------+--------------+------+
6 rows in set (0.00 sec)
mysql> select * from Questions;
+-----+------------------------+
| qId | question |
+-----+------------------------+
| 1 | what is your language? |
| 2 | what is your drink? |
+-----+------------------------+
2 rows in set (0.00 sec)
mysql> select * from Questions, Answers where Answers.qId=2;
+-----+------------------------+-----+--------------+--------------+------+
| qId | question | aId | answer | answer_count | qId |
+-----+------------------------+-----+--------------+--------------+------+
| 1 | what is your language? | 5 | manhattan | 0 | 2 |
| 1 | what is your language? | 6 | cosmopolitan | 0 | 2 |
| 2 | what is your drink? | 5 | manhattan | 0 | 2 |
| 2 | what is your drink? | 6 | cosmopolitan | 0 | 2 |
+-----+------------------------+-----+--------------+--------------+------+
当我希望它显示时
mysql> select * from Questions, Answers where Answers.qId=2;
+-----+------------------------+-----+--------------+--------------+------+
| qId | question | aId | answer | answer_count | qId |
+-----+------------------------+-----+--------------+--------------+------+
| 2 | what is your drink? | 5 | manhattan | 0 | 2 |
| 2 | what is your drink? | 6 | cosmopolitan | 0 | 2 |
+-----+------------------------+-----+--------------+--------------+------+
我已经查看文档几个小时了,如果有任何帮助,我将不胜感激 :) 谢谢。
【问题讨论】:
标签: javascript mysql node.js express sequelize.js