[解決済み] TypeError: express、postgres、sequelize で未定義のエラーのプロパティ 'create' を読み取れませんでした。
2022-02-25 13:08:33
質問
でログインシステムを作ろうとしています。
Express
を使用しています。
Postgres
と
ORM
という
Sequelize
以下は私のコードです。
ユーザ名.js
var express = require('express');
var bodyParser = require('body-parser');
var db = require('../config/database');
var path = require('path');
var router = express.Router();
var {alumno, profesor} = require('../models/articles');
router.use(bodyParser.urlencoded({ extended: false }));
router.use(bodyParser.json());
router.post("/doregister_profesor", function(req, res) {
console.log("FIRST REQUEST ======>", req.body);
console.log("STEP 1 ======>", Date.parse(req.body.edad));
const edad = Date.parse(req.body.edad);
try {
db.sequelize.sync().then(() =>
profesor.create({
username : req.body.username,
password: req.body.password,
email: req.body.email,
pdni: req.body.pdni,
pdniinput: req.body.pdniinput,
edad: new Date(Date.now()),
grado: req.body.grado
})
);
var newProfesor = new profesor({
username : username,
password: password,
email: email,
pdni: pdni,
pdniinput: pdniinput,
edad: new Date(Date.now()),
grado: grado
});
profesor.createProfesor(newProfesor, function(){
if(err) throw err;
console.log(user)
});
res.render('entrar_profesores');
} catch (e) {
console.log(e);
}
});
これは私のarticle.jsです。
var db = require('../config/database');
const profesores = db.sequelize.define('profesores', {
username: db.Sequelize.STRING,
password: db.Sequelize.STRING,
email : db.Sequelize.STRING,
pdni: db.Sequelize.STRING,
pdniinput: db.Sequelize.INTEGER,
edad : db.Sequelize.DATEONLY,
grado : db.Sequelize.STRING
},
);
var profesor = module.exports = {'profesores': profesores};
var alumno = module.exports = {'alumnos': alumnos};
module.exports.createAlumnos = function(newAlumno, callback){
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(newAlumno.password, salt, function(err, hash) {
newAlumno.password = hash;
newAlumno.save(callback);
});
});
}
module.exports.createProfesor = function(newProfesor, callback){
bcrypt.genSalt(10, function(err, salt) {
bcrypt.hash(newProfesor.password, salt, function(err, hash) {
newProfesor.password = hash;
newProfesor.save(callback);
});
});
}
パスポート.js
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
const {profesores, alumnos} = require('../models/articles');
const config = require('../config/database');
var express = require('express');
let session = require('express-session')
let router = express.Router();
module.exports = function(passport){
console.log('llego hasta aqui 1', profesores);
passport.use('local', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
}, function(req, email, password, done){
profesores.findOne({where: {email: email, password:password}}).then(function(user) {//function(err, user){
console.log('consulta hecha');
//console.log(user);
if (!user) {
return done(null, false);
}
/*if (!user.validPassword(password)) {
return done(null, false);
}*/
return done(null, user);
});
})
);
passport.serializeUser(function(user, done) {
console.log('llego hasta aqui 32 ', err);
done(null, user.id)
console.log('=================== ',err);
});
try{
passport.deserializeUser(function(id, done) {
console.log('llego hasta aqui ===============');
profesores.findById(id).then(function(user){
done(user);
});
console.log('llego hasta aqui 53');
});
}catch (err) {
console.log(err);
}
}
このようなエラーメッセージが表示されるのですが。
Unhandled rejection TypeError: Cannot read property 'create' of undefined
at db.sequelize.sync.then (/Users/antoniotoche/Desktop/nodeterax/routes/users_logic.js:45:18)
at tryCatcher (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/util.js:16:23)
at Promise._settlePromiseFromHandler (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/promise.js:512:31)
at Promise._settlePromise (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/promise.js:569:18)
at Promise._settlePromise0 (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/promise.js:614:10)
at Promise._settlePromises (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/promise.js:694:18)
at _drainQueueStep (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/async.js:138:12)
at _drainQueue (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/async.js:131:9)
at Async._drainQueues (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/async.js:147:5)
at Immediate.Async.drainQueues [as _onImmediate] (/Users/antoniotoche/Desktop/nodeterax/node_modules/bluebird/js/release/async.js:17:14)
at runCallback (timers.js:694:18)
at tryOnImmediate (timers.js:665:5)
at processImmediate (timers.js:647:5)
解決方法は?
エクスポートが間違っているようです。
module.exports.profesor = profesores;
module.exports.alumno = alumno;
は、おそらくあなたがやりたいことだと思いますが、以下の点に注意してください。
alumno
は定義されていません。
のインポートもご注意ください。
passport.js
と
user.js
は一致しません。
関連
-
[解決済み] リソースの読み込みに失敗しました: net::ERR_CONNECTION_REFUSED : Nodejs
-
[解決済み】mongoError: トポロジーが破壊されました
-
[解決済み】AWS Lambdaでnodejsの「ref」モジュールを使用すると「invalid ELF header」と表示される件
-
[解決済み】Google spreadsheet api Requestに不十分な認証スコープがあった。
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】passport.js passport.initialize() ミドルウェアが使用されていません。
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み】AWS lambda function エラー - モジュール 'index' をインポートできません。エラー
-
[解決済み] のエラーが発生しました。これはおそらくnpmの問題ではありません。上に追加のログ出力があると思われます
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】AWS STS AssumeRoleへのアクセスを可能にする方法
-
[解決済み】Discord.js が特定のチャンネルにメッセージを送信する場合
-
[解決済み] エラー: nodejs の get 呼び出しで getaddrinfo ENOTFOUND が発生しました。
-
[解決済み】「npm install」と「npm rebuild」の違いとは?
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] bodyParser は非推奨です express 4
-
[解決済み] AWS lambda function error - Unable to import module 'index': エラー
-
[解決済み] エラーメッセージ MongoError: bad auth URI 文字列で認証に失敗しました。
-
[解決済み] NodeJsのSequelizeでautoIncrementはどのように動作するのですか?
-
[解決済み] エラー: ノード出力を "|head" にパイプするときに EPIPE を書き込む。