Mysql sequelize提供了错误的表名
我有一个数据库。其中我有一个“Mysql sequelize提供了错误的表名,mysql,node.js,rest,express,sequelize.js,Mysql,Node.js,Rest,Express,Sequelize.js,我有一个数据库。其中我有一个“user”表 我正在尝试使用sequelize创建我的第一个RESTapi 但是,当它执行我的查询时,我在控制台中得到以下信息: SELECT `id`, `username`, `password`, `name`, `organization_id`, `type_id`, `join_date` FROM `users` AS `user` WHERE `user`.`id` = '1'; 如您所见,它尝试使用名为users的表,但该表不存在 以下是我的一些
user
”表
我正在尝试使用sequelize创建我的第一个REST
api
但是,当它执行我的查询时,我在控制台中得到以下信息:
SELECT `id`, `username`, `password`, `name`, `organization_id`, `type_id`, `join_date` FROM `users` AS `user` WHERE `user`.`id` = '1';
如您所见,它尝试使用名为users
的表,但该表不存在
以下是我的一些代码:
如果您需要更多,请告诉我我不确定哪里出了问题
var User = sequelize.define('user', {
id: DataTypes.INTEGER,
username: DataTypes.STRING,
password: DataTypes.STRING,
name: DataTypes.STRING,
organization_id: DataTypes.INTEGER,
type_id: DataTypes.INTEGER,
join_date: DataTypes.STRING
}, {
instanceMethods: {
retrieveAll: function(onSuccess, onError) {
User.findAll({}, {raw: true})
.ok(onSuccess).error(onError);
},
retrieveById: function(user_id, onSuccess, onError) {
User.find({where: {id: user_id}}, {raw: true})
.success(onSuccess).error(onError);
},
add: function(onSuccess, onError) {
var username = this.username;
var password = this.password;
var shasum = crypto.createHash('sha1');
shasum.update(password);
password = shasum.digest('hex');
User.build({ username: username, password: password })
.save().ok(onSuccess).error(onError);
},
updateById: function(user_id, onSuccess, onError) {
var id = user_id;
var username = this.username;
var password = this.password;
var shasum = crypto.createHash('sha1');
shasum.update(password);
password = shasum.digest('hex');
User.update({ username: username,password: password},{where: {id: id} })
.success(onSuccess).error(onError);
},
removeById: function(user_id, onSuccess, onError) {
User.destroy({where: {id: user_id}}).success(onSuccess).error(onError);
}
}
});
我以前没有使用过sequelize,但从他们的文档中可以看出-可能您缺少了-
User.sync({force:true})。然后(函数(){
//创建的表
返回User.create({
名字:“约翰”,
姓:“汉考克”
});
});代码>
i、 e.表格创建部分
谢谢要解决您的问题,您需要在options对象中设置freezeTableName=true
e、 g
不是使用表“user”,而是创建一个名为“users”的表,这只是为了澄清,“user”表实际上已经存在于数据库中了吗?您是手动创建的还是Sequelize创建的?@HeadCode用户表存在于我的数据库中,是手动创建的,已经包含大量数据。我没有意识到这一点,但“user”看起来是一个保留关键字。我不能说这会给你带来问题,但是看看这篇帖子:哇,我已经很接近解决这个问题了,我只是把那句话插错了地方谢谢!感谢您为我们指出了正确的方向,但上面的实际语法不正确:freezeTableName=true
应该是freezeTableName:true
var User = sequelize.define('user', {
id: DataTypes.INTEGER,
username: DataTypes.STRING,
password: DataTypes.STRING,
name: DataTypes.STRING,
organization_id: DataTypes.INTEGER,
type_id: DataTypes.INTEGER,
join_date: DataTypes.STRING
}, {
freezeTableName: true,
instanceMethods: {
retrieveAll: function(onSuccess, onError) {
User.findAll({}, {raw: true})
.ok(onSuccess).error(onError);
},
retrieveById: function(user_id, onSuccess, onError) {
User.find({where: {id: user_id}}, {raw: true})
.success(onSuccess).error(onError);
},
add: function(onSuccess, onError) {
var username = this.username;
var password = this.password;
var shasum = crypto.createHash('sha1');
shasum.update(password);
password = shasum.digest('hex');
User.build({ username: username, password: password })
.save().ok(onSuccess).error(onError);
},
updateById: function(user_id, onSuccess, onError) {
var id = user_id;
var username = this.username;
var password = this.password;
var shasum = crypto.createHash('sha1');
shasum.update(password);
password = shasum.digest('hex');
User.update({ username: username,password: password},{where: {id: id} })
.success(onSuccess).error(onError);
},
removeById: function(user_id, onSuccess, onError) {
User.destroy({where: {id: user_id}}).success(onSuccess).error(onError);
}
}
});