【发布时间】:2017-04-20 05:39:33
【问题描述】:
我开始使用 node express 和 Sequelize。我从他们的 git 页面遵循Sequelize/express 的示例,但是在执行 de app 时遇到了问题。所有的表都是正确创建的并且没有显示错误,但是当我查看表而不是创建一个名为 secretariaid 的外键来引用秘书表时,它创建了一个名为 secretarumid 的字段,尝试使用时抛出和错误数据库。
我有点困惑是错误:
使用 sequelize model:create 创建的模型和迁移。
oficina.js
'use strict';
module.exports = function(sequelize, DataTypes) {
var Oficina = sequelize.define('Oficina', {
nombre_oficina: DataTypes.STRING,
direccion: DataTypes.STRING,
telefono: DataTypes.STRING,
interno: DataTypes.STRING,
email: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
Oficina.belongsTo(models.Secretaria, {
onDelete: "CASCADE",
foreignKey: {
allowNull: false
}
});
}
}
});
return Oficina;
};
secretaria.js
'use strict';
module.exports = function(sequelize, DataTypes) {
var Secretaria = sequelize.define('Secretaria', {
nombre_secretaria: DataTypes.STRING
}, {
classMethods: {
associate: function(models) {
Secretaria.hasMany(models.Oficina);
}
}
});
return Secretaria;
};
www.js 上的同步()
models.sequelize.sync().then(function() {
/**
* Listen on provided port, on all network interfaces.
*/
server.listen(port);
server.on('error', onError);
server.on('listening', onListening);
});
名字是问题的接缝,如果我使用“Secre”代替“Secretaria”,它可以正常工作,但是“Secret”或“Secret”+任何其他字母不会使表secretaria和外键结束向上“secretariumId”。 “Secret+++++”是某种保留字吗?
更新
"use strict";
module.exports = function(sequelize, DataTypes) {
var Secretaria = sequelize.define("Secretaria",
{
nombre: DataTypes.STRING
},
{
classMethods: {
associate: function(models) {
Secretaria.hasMany(models.Oficina)
}
},
name: {
singular: 'secretaria',
plural: 'secretarias',
},
tableName: "secretarias"
});
return Secretaria;
};
使用选项名称修复外键问题,而 tableName 修复复数形式。现在一切正常。
【问题讨论】:
标签: javascript mysql node.js express sequelize.js