Node.js 为什么我的sequelize模型只有在尝试使用find函数时才未定义?
我正在尝试在节点中设置用户登录和注册ORMSuelize。我的注册部分工作正常。我的模型实例被定义为User,当我调用User.createUser时,我的模型函数起作用,一个用户被添加到数据库中。然而,当我尝试在passport本地策略中使用getUserNameById函数时,我得到一个错误“用户未定义”。我已经被困了一天多想弄明白这件事 模型文件(我已导入sequelize、bcrypt并创建了连接) 我的路线代码,特别是我遇到麻烦的当地护照策略Node.js 为什么我的sequelize模型只有在尝试使用find函数时才未定义?,node.js,sequelize.js,passport-local,Node.js,Sequelize.js,Passport Local,我正在尝试在节点中设置用户登录和注册ORMSuelize。我的注册部分工作正常。我的模型实例被定义为User,当我调用User.createUser时,我的模型函数起作用,一个用户被添加到数据库中。然而,当我尝试在passport本地策略中使用getUserNameById函数时,我得到一个错误“用户未定义”。我已经被困了一天多想弄明白这件事 模型文件(我已导入sequelize、bcrypt并创建了连接) 我的路线代码,特别是我遇到麻烦的当地护照策略 var User = require(".
var User = require("../models/users");
var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function (username, password, done) {
User.getUserByUsername(username, function (user) {
if(!user){
return done(null, false, {message:'Incorrect username'})
}
})
User.comparePassword(password, user.password, function (err, isMatch) {
if(err) throw err;
if(isMatch){
return done(null, user);
}else{
return done(null, false, {message: 'Invalid password'});
}
})
}
));
您的
/models/user
类正在导出一个函数,该函数将连接
和数据类型
作为参数,但您没有将它们传入-应该传递连接。您不需要调用connection.authenticate()
var User = require("../models/users");
var express = require('express');
var router = express.Router();
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
passport.use(new LocalStrategy(
function (username, password, done) {
User.getUserByUsername(username, function (user) {
if(!user){
return done(null, false, {message:'Incorrect username'})
}
})
User.comparePassword(password, user.password, function (err, isMatch) {
if(err) throw err;
if(isMatch){
return done(null, user);
}else{
return done(null, false, {message: 'Invalid password'});
}
})
}
));
// new db connection
var connection = new Sequelize(
schema,
username,
password,
{
host: host,
dialect: dialect,
}
)
var DataTypes = // define DataTypes
// pass into User
var User = require("../models/users")(connection, DataTypes);