Мой пользовательский паспорт приложения для аутентификации. Аутентификация работает. Я пытаюсь осуществить сброс пароля и получаю следующую ошибку.
TypeError: user.setPassword не является функцией
Я прошел через stackoverflow и другие сайты из-за этой ошибки, и все они указывают на «passport-local-mongoose», но у меня уже есть этот модуль. Не уверен, что еще здесь не так:
Вот мой. \ Models \ user.js
var mongoose = require("mongoose");
var passportLocalMongoose = require("passport-local-mongoose");
var userSchema = new mongoose.Schema({
username: String,
password: String,
fullname: String,
role: String,
status: String
});
userSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("user", userSchema);
вот моя форма в. \ Views \ admusrpwreset.ejs
<form action="/admusrpwreset/<%= user._id %>" method="POST">
<UL>
<Li>
Username : <span class="admstudyinput"><%= user.username %></span>
</Li>
<Li>
Password :
<input class="admstudyinput" type="password" name="password" placeholder="Minumum 8 characters">
</Li>
<Li>
Confirm :
<input class="admstudyinput" type="password" name="confirm" placeholder="Confirm the password">
</Li>
<Li>
<button class="btn btn-lg btn-block btn-dark" type="submit">RESET</button>
</Li>
</UL>
</form>
Вот POST-маршрут, на который вышеприведенная форма отправляет данные:
Это в. \Ways \ auth.js
router.post("/admusrpwreset/:id", isLoggedinAdmin, function(req, res){
user.findOne(req.params.id, function(err,returneduser){
if(!user){
console.log("No user exists");
}
if (req.body.password === req.body.confirm){
user.setPassword(req.body.password, function(err) {
user.save(function(err){
console.log(err);
res.redirect("/adminuser");
});
});
} else {
console.log("Passwords do not match") ;
res.redirect("/adminuser");
}
});
});
Я ожидаю сброса пароля. Я не вижу, что я делаю неправильно.
Спасибо за ваше время!