Nodejs:passport-local-mongoose 的 .plugin(...) 不执行任何操作
Nodejs : passport-local-mongoose's .plugin(...) doesn't do anything
我正在尝试使用 passport-local-mongoose
在我的 MongoDB 数据库中注册用户。然而它似乎没有做它应该做的事情。
型号:
var userSchema = new mongoose.Schema({
email: {
type: String,
...
},
});
userSchema.plugin(passportLocalMongoose, {usernameField: 'email'});
userSchema.statics = {
...
}
userSchema.methods = {
...
}
var User = mongoose.model('User', userSchema);
module.exports = User;
控制器:
exports.registerAction = async (req, res, next) => {
const user = new User({ email: req.body.email });
User.register(user, req.body.password, function() {
res.send('It works!');
});
据我了解,Passport 应该在 User 上实现 register
方法,但这里 User.register
仍然是 undefined
。
我做错了什么?
我自己找到了解决方案。
userSchema.plugin(...)
调用必须在 定义userSchema.statics = {…}
和userSchema.methods = {…}
.
之后进行
我猜 .plugin(...)
尝试使用 statics
或 methods
属性(或两者),并将它们初始化为新对象。然后,当我们调用 userSchema.statics = {…}
(或 methods
)时,它只是擦除 .plugin(...)
创建的内容。
我正在尝试使用 passport-local-mongoose
在我的 MongoDB 数据库中注册用户。然而它似乎没有做它应该做的事情。
型号:
var userSchema = new mongoose.Schema({
email: {
type: String,
...
},
});
userSchema.plugin(passportLocalMongoose, {usernameField: 'email'});
userSchema.statics = {
...
}
userSchema.methods = {
...
}
var User = mongoose.model('User', userSchema);
module.exports = User;
控制器:
exports.registerAction = async (req, res, next) => {
const user = new User({ email: req.body.email });
User.register(user, req.body.password, function() {
res.send('It works!');
});
据我了解,Passport 应该在 User 上实现 register
方法,但这里 User.register
仍然是 undefined
。
我做错了什么?
我自己找到了解决方案。
userSchema.plugin(...)
调用必须在 定义userSchema.statics = {…}
和userSchema.methods = {…}
.
我猜 .plugin(...)
尝试使用 statics
或 methods
属性(或两者),并将它们初始化为新对象。然后,当我们调用 userSchema.statics = {…}
(或 methods
)时,它只是擦除 .plugin(...)
创建的内容。