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(...) 尝试使用 staticsmethods 属性(或两者),并将它们初始化为新对象。然后,当我们调用 userSchema.statics = {…}(或 methods)时,它只是擦除 .plugin(...) 创建的内容。