我不太熟悉sequelize,但我知道你可以使用它直接发出SQL查询和命令sequelize.query
因此,如果您只想创建具有外键约束的两个表,这里是适当的 SQL(请注意,这是 SQLite 方言 - 请注意缺少日期时间)
CREATE TABLE Persons(
id integer primary key,
name text);
CREATE TABLE ChildrenPersons(
personId integer not null,
childrenId integer not null,
createdAt integer not null,
updatedAt integer not null,
primary key(personId,childrenId),
foreign key(personId) references Persons(id),
foreign key(childrenId) references Persons(id));
我希望这有帮助
EDIT
以下代码将使用sequelize 行话创建表(已确认与sequelize 1.7.9 一起使用):
var Sequelize = require('sequelize'),
sequelize = new Sequelize('test','','',
{
dialect: 'sqlite',
storage: 'test.db'
})
var Person = sequelize.define('Person', {name: Sequelize.STRING})
var PersonChildren = sequelize.define('PersonChildren',
{
PersonId: {
type: Sequelize.INTEGER,
references: Person,
referencesKey: 'id',
primaryKey: true
},
ChildrenId: {
type: Sequelize.INTEGER,
references: Person,
referencesKey: 'id',
primaryKey: true
}
})
sequelize.sync({force: true}).complete(function(err){
if(!!err){
console.log('Error: ',err)
}else
{
console.log('All OK')
}
})
请参阅以下 Sequelize 文档文章来强制执行外键约束:http://sequelizejs.com/docs/latest/associations http://sequelizejs.com/docs/latest/associations