Express user.setPassword不是函数-passport local mongoose

Express user.setPassword不是函数-passport local mongoose,express,mongoose,passport.js,Express,Mongoose,Passport.js,我正在为我网站的用户在上实现重置密码功能。但是,当用户在reset.ejs页面确认新密码时,它似乎会抛出此错误 正在正确执行以下步骤: 邮寄的代币 单击令牌时,新密码页面打开 当用户输入新密码并确认新密码并点击按钮保存新密码时,users.jsuser.setPassword中的函数不起作用,错误如下所述。这是passport local mongoose的内置功能 错误:user.savePassword不是函数 包括以下所有代码文件: users.js: 您似乎没有在用户模型下定义名为s

我正在为我网站的用户在上实现重置密码功能。但是,当用户在reset.ejs页面确认新密码时,它似乎会抛出此错误

正在正确执行以下步骤:

  • 邮寄的代币
  • 单击令牌时,新密码页面打开
当用户输入新密码并确认新密码并点击按钮保存新密码时,users.js
user.setPassword
中的函数不起作用,错误如下所述。这是passport local mongoose的内置功能

错误:user.savePassword不是函数

包括以下所有代码文件:

users.js:


您似乎没有在用户模型下定义名为
setPassword
的方法。这主要是因为您没有将
passport本地mongoose
插件到
UserSchema
。添加
UserSchema.plugin(passportLocalMongoose)UserSchema
创建模型之前,请执行code>。像这样

    var mongoose = require('mongoose');
    var bcrypt = require('bcryptjs');
    var passportLocalMongoose=require("passport-local-mongoose");
    mongoose.connect('mongodb://localhost/dataseed');

    var db = mongoose.connection;

    // User Schema
    var UserSchema = mongoose.Schema({
        username: {
            type: String,
            index: true
        },
        password: {
            type: String
        },
        email: {
            type: String
        },
        name: {
            type: String
        },
        profileimage:{
            type: String
        },
        as:{
            type:String
        },
        institution:{
            type:String
        },
        education:{
            type:String

        },
        proffession:{
            type:String
        },
        country:{
            type:String
        },
        resetPasswordToken: String,
        resetPasswordExpires: Date

    });

    UserSchema.plugin(passportLocalMongoose);

    var User = module.exports = mongoose.model('User', UserSchema);

我正在学习上面提到的教程,在任何地方都找不到该函数。我遇到的错误与我在上面插入passportLocalMongoose时遇到的错误相同。嗨@TRomesh,我应该使用scryto而不是passportLocalMongoose吗?
var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
var passportLocalMongoose=require("passport-local-mongoose");
mongoose.connect('mongodb://localhost/dataseed');

var db = mongoose.connection;

// User Schema
var UserSchema = mongoose.Schema({
    username: {
        type: String,
        index: true
    },
    password: {
        type: String
    },
    email: {
        type: String
    },
    name: {
        type: String
    },
    profileimage:{
        type: String
    },
    as:{
        type:String
    },
    institution:{
        type:String
    },
    education:{
        type:String

    },
    proffession:{
        type:String
    },
    country:{
        type:String
    },
    resetPasswordToken: String,
    resetPasswordExpires: Date

});

var User = module.exports = mongoose.model('User', UserSchema);

module.exports.getUserById = function(id, callback){
    User.findById(id, callback);
}

module.exports.getUserByUsername = function(username, callback){
    var query = {username: username};
    User.findOne(query, callback);
}

module.exports.comparePassword = function(candidatePassword, hash, callback){
    bcrypt.compare(candidatePassword, hash, function(err, isMatch) {
        callback(null, isMatch);
    });
}

module.exports.createUser = function(newUser, callback){
    bcrypt.genSalt(10, function(err, salt) {
        bcrypt.hash(newUser.password, salt, function(err, hash) {
            newUser.password = hash;
            newUser.save(callback);
        });
    });
}
    var mongoose = require('mongoose');
    var bcrypt = require('bcryptjs');
    var passportLocalMongoose=require("passport-local-mongoose");
    mongoose.connect('mongodb://localhost/dataseed');

    var db = mongoose.connection;

    // User Schema
    var UserSchema = mongoose.Schema({
        username: {
            type: String,
            index: true
        },
        password: {
            type: String
        },
        email: {
            type: String
        },
        name: {
            type: String
        },
        profileimage:{
            type: String
        },
        as:{
            type:String
        },
        institution:{
            type:String
        },
        education:{
            type:String

        },
        proffession:{
            type:String
        },
        country:{
            type:String
        },
        resetPasswordToken: String,
        resetPasswordExpires: Date

    });

    UserSchema.plugin(passportLocalMongoose);

    var User = module.exports = mongoose.model('User', UserSchema);