SequelizeJS - Неправильные модели?
Я определил некоторые модели для Sequelize, и когда я запускаю свой сервер, я получаю ошибки для всех моделей.
user.js is not a valid model
Вот мое определение модели;
'use strict';
module.exports = function(sequelize, DataTypes) {
var User = sequelize.define('User', {
id: DataTypes.UUIDV4,
emailAddress: DataTypes.STRING,
firstName: DataTypes.STRING,
lastName: DataTypes.STRING,
mobileNumber: DataTypes.STRING,
joinDate: DataTypes.DATE,
emailConfirmed: DataTypes.BOOLEAN,
accessLevel: DataTypes.INT,
active: DataTypes.BOOLEAN
}, {
classMethods: {
associate: function(models) {
}
}
});
return User;
};
Для генерации моделей я использовал sequelize-cli, поэтому я не уверен, почему они недействительны. Я использую плагин hapi-sequelize, чтобы заставить Sequelize работать с HapiJS.
2 ответа
На случай, если кто-нибудь столкнется с этим вопросом в будущем;
Проблема с этим кодом заключается в этой строке;
accessLevel: DataTypes.INT,
так должно быть;
accessLevel: DataTypes.INTEGER,
Ошибка, о которой вы сообщаете, показалась на моей стороне только тогда, когда я включил каталог моделей, в котором есть index.js
файл, который используется для загрузки моделей из БД и не является подходящим файлом js модели, из которого можно читать из sequalize.
я сделал sequalize init
настроить мой конфиг внутри config/config.json
с надлежащими полномочиями.
Затем я создал пользовательскую модель через CLI и перенес ее в базу данных. sequelize db:migrate
ниже моя конфигурация:
{
"development": {
"username": "root",
"password": "root",
"database": "nodedb",
"host": "127.0.0.1",
"dialect": "mysql"
},
}
Затем я зарегистрировал sequalize в Hapi следующим образом: обратите внимание, что я прошу плагин sequalize hapi загружать модели из подкаталога внутри модели, чтобы он не читал index.js
:
'use strict';
var Hapi = require('hapi');
// Create a server with a host and port
var server = new Hapi.Server();
server.connection({
host: 'localhost',
port: 8000,
});
server.register(
[
{
register: require('hapi-sequelize'),
options: {
database: 'nodedb',
user: 'root',
pass: 'root',
dialect: 'mysql',
port: 3306,
models: 'models/models/*.js',
sequelize: {
define: {
underscoredAll: true
}
}
}
},
], function(err) {
if (err) {
console.error('failed to load plugin');
}
// Start the server
server.start((err) => {
if (err) {
throw err;
}
console.log('Server running at:', server.info.uri);
});
}
);
Надеюсь, это поможет.