node.js - 您好,我一直在尝试为正在使用护照本地猫鼬构建的应用程序设置用户身份验证并面临此错误
问题描述
我一直在尝试使用passport-local-mongoose
. 当我运行下面抛出此错误的代码时,我的应用程序崩溃:
MissingSchemaError: Schema hasn't been registered for model "../models/User.js".
这是我的 passport.js 文件
const mongoose = require('mongoose');
// const passport = require('passport');
// const LocalStrategy = require('passport-local');
const User = mongoose.model('../models/User.js');
passport.use(new LocalStrategy({
usernameField: "email",
passwordField: "password"
},
User.authenticate()
));
passport.serializeUser(function(user, done){
done(null, user.id);
});
passport.deserializeUser(function(id, done){
User.findById(id, function(err, user){
done(err, user);
});
});
这是我的 User.js 文件
const mongoose = require("mongoose");
const passportLocalMongoose = require('passport-local-mongoose');
const Schema = mongoose.Schema;
const RegisteredUsers = new Schema({
firstName: String,
lastName: String,
email: String,
phone: Number,
password: String,
skill: {
type: String,
required: [true],
enum: {
values: ['developer', 'designer', 'recruitor', "other"],
}
},
specify: String
});
RegisteredUsers.plugin(passportLocalMongoose);
const User = mongoose.model("User", RegisteredUsers);
module.exports = User
这是我的用户路线
const mongoose = require("mongoose");
const passportLocalMongoose = require('passport-local-mongoose');
const Schema = mongoose.Schema;
const RegisteredUsers = new Schema({
firstName: String,
lastName: String,
email: String,
phone: Number,
password: String,
skill: {
type: String,
required: [true],
enum: {
values: ['developer', 'designer', 'recruitor', "other"],
}
},
specify: String
});
RegisteredUsers.plugin(passportLocalMongoose);
const User = mongoose.model("User", RegisteredUsers);
module.exports = User
这是我的 app.js
const mongoose = require("mongoose");
const passportLocalMongoose = require('passport-local-mongoose');
const Schema = mongoose.Schema;
const RegisteredUsers = new Schema({
firstName: String,
lastName: String,
email: String,
phone: Number,
password: String,
skill: {
type: String,
required: [true],
enum: {
values: ['developer', 'designer', 'recruitor', "other"],
}
},
specify: String
});
RegisteredUsers.plugin(passportLocalMongoose);
const User = mongoose.model("User", RegisteredUsers);
module.exports = User
这是运行代码后出现的错误。
C:\Users\TicqxKid\Desktop\Officium_App\Backend-Beta\node_modules\mongoose\lib\index.js:526
throw new mongoose.Error.MissingSchemaError(name);
^
MissingSchemaError: Schema hasn't been registered for model "../models/User.js".
Use mongoose.model(name, schema)
at Mongoose.model (C:\Users\TicqxKid\Desktop\Officium_App\Backend-Beta\node_modules\mongoose\lib\index.js:526:13)
at Object.<anonymous> (C:\Users\TicqxKid\Desktop\Officium_App\Backend-Beta\config\passport.js:5:23)
at Module._compile (internal/modules/cjs/loader.js:1015:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
at Module.load (internal/modules/cjs/loader.js:879:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Module.require (internal/modules/cjs/loader.js:903:19)
at require (internal/modules/cjs/helpers.js:74:18)
at Object.<anonymous> (C:\Users\TicqxKid\Desktop\Officium_App\Backend-Beta\app.js:13:1)
at Module._compile (internal/modules/cjs/loader.js:1015:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1035:10)
at Module.load (internal/modules/cjs/loader.js:879:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12)
at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting...
请帮我解决这个问题。
解决方案
推荐阅读
- c# - 在基本添加语句后保存更改调用超时的问题
- javascript - 更改后 ReactJs 状态不更新
- python - 无法在机器人框架中添加 httplibrary
- ios - UIView 不会出现在模拟器中
- android - 如何在条形图中启用滚动并将 xAxis 标签与条形组对齐?
- yii2 - Yii2 中的 ForbiddenHttpException 问题
- rdf - 我已经开发了一个本体——我该如何进行?
- django - 如何查询多个条件中的2个
- sql-server - 在创建表语句中动态打开/关闭标识
- javascript - RichEditor 使用 execCommand('bold') 两次附加额外标签