Node.js 为什么我的sequelize模型只有在尝试使用find函数时才未定义?

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(".

我正在尝试在节点中设置用户登录和注册ORMSuelize。我的注册部分工作正常。我的模型实例被定义为User,当我调用User.createUser时,我的模型函数起作用,一个用户被添加到数据库中。然而,当我尝试在passport本地策略中使用getUserNameById函数时,我得到一个错误“用户未定义”。我已经被困了一天多想弄明白这件事

模型文件(我已导入sequelize、bcrypt并创建了连接)

我的路线代码,特别是我遇到麻烦的当地护照策略

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);