У меня есть база данных. Где я есть «user
» столsequelize дает неправильное имя таблицы
Я пытаюсь создать свой первый REST
API с помощью sequelize
однако, когда он выполняет мой запрос я получаю следующее в консоли:
SELECT `id`, `username`, `password`, `name`, `organization_id`, `type_id`, `join_date` FROM `users` AS `user` WHERE `user`.`id` = '1';
как вы может видеть, что он пытается использовать таблицу с именем users
, однако эта таблица не существует.
Вот некоторые из моего кода:
Пожалуйста, скажите мне, если вам нужно больше, я не совсем уверен, где это идет не так? : S
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 создавали его? – HeadCode
@HeadCode пользовательская таблица существует в моей базе данных и была создана вручную и уже содержит множество данных –
Я этого не понимал, но «пользователь» выглядит как зарезервированное ключевое слово. Я не могу сказать, что это вызывает у вас проблемы, но посмотрите это сообщение: http://stackoverflow.com/questions/21114499/how-to-make-sequelize-use-singular-table-names – HeadCode