私はnodejsとSequelize ORMフレームワークを初めて使用しています。私はそれをmysqlで動作させようとしています。私はいくつかの大きな進歩を遂げましたが、現時点では、後編がモデルにロードされる必要がある部分に悩まされています。しかし、名前がファイルから取得される場所でエラーが発生しています。mysqlでSequelizeのモデル名を取得する
: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);
}
}
});
};
WWW私はデシベル[model.name] =モデルで、このエラーを取得しておきます
TypeError: Cannot read property 'name' of undefined
しばらくこのエラーが発生しました。どんな助けがあれば幸いです。
ご回答いただきありがとうございます。それは多くの助けとなりました。 dbチェックをどこに置くことをお勧めしますか? app.jsにありますか? –
もちろん!私は助けることができてうれしい!正直なところ、db check関数はどこでも実行できますが、その唯一の目的はデータベースへの接続性を確認することです。基本的には単純な認証「SELECT 1 + 1」を認証して実行し、必要な処理を実行できることを確認します。私はあなたのアプリケーションをどこにブートストラップするのかはわかりません。 – Pierce