Sono nuovo a nodejs e al framework Sequelize ORM. Sto cercando di farlo funzionare con mysql. Ho fatto dei grandi progressi ma al momento sono bloccato nella parte in cui sequelize ha bisogno di caricare nei modelli. Ma sto ricevendo un errore in cui il nome viene recuperato dal file.Impossibile recuperare il nome del modello per Sequelize con mysql
www
var debug = require('debug')('sampleapp')
var app = require('../server');
var models = require('../model');
app.set('port', process.env.PORT || 3000);
//server running
models.sequelize.sync().then(function() {
var server = app.listen(app.get('port'), function(){
debug('The magic is happening on port '+server.address().port);
});
});
index.js
"use strict"
var fs = require('fs');
var path = require('path');
var Sequelize = require('sequelize');
var debug = require('debug');
var env = process.env.NODE_ENV || "development";
var config = require(path.join(__dirname, '..', 'config', 'config.json'))[env];
var sequelize = new Sequelize(config.database, config.username, config.password, config);
var db = {};
fs.readdirSync(__dirname)
.filter(function(file) {
return (file.indexOf(".") !== 0) && (file !== 'index.js')
})
.forEach(function(file) {
var model = sequelize['import'](path.join(__dirname, file))
db[model.name] = model
});
db.sequelize = sequelize;
db.Sequelize = Sequelize;
module.exports = db;
user.js
module.exports = function(sequelize, DataType){
var User = sequelize.define('user', {
name: DataType.STRING,
password: DataType.STRING,
lastName: DataType.STRING,
email: DataType.STRING,
gender: DataType.CHAR,
cellNumber: DataType.INTEGER
}, {
instanceMethods : {
create : function(onSuccess, onError){
var name = this.name;
var lastName = this.lastName;
var email = this.email;
var gender = this.gender;
var cellNumber = this.cellNumber;
var password = this.password;
var shasum = crypto.createHash('sha1');
shasum.update(password);
password = shasum.digest('hex');
User.build({name: name, lastName: lastName, email: email, gender: gender, cellNumber: cellNumber, password: password})
.save().success(onSuccess).error(onError);
}
}
});
};
Continuo a ricevere questo errore al db [model.name] = modello:
TypeError: Cannot read property 'name' of undefined
Sono stati su questo errore da un po 'ora. qualsiasi aiuto sarebbe molto apprezzato
grazie per la tua risposta descrittiva. Ha aiutato molto. dove consiglieresti di mettere il controllo db? in app.js? –
Naturalmente! Sono felice di poterti aiutare! Onestamente, la funzione di controllo db può essere eseguita ovunque, il suo unico scopo è verificare la connettività al database. Fondamentalmente si limita ad autenticare ed esegue una semplice query 'SELECT 1 + 1' per assicurarsi che possa fare ciò di cui ha bisogno. Non consiglierei di esistere ovunque, ma dove si avvia la tua applicazione. – Pierce