gpt4 book ai didi

javascript - MongoDB:尚未为模型 "User"注册架构

转载 作者:行者123 更新时间:2023-12-02 22:33:00 24 4
gpt4 key购买 nike

我一直在尝试使用express和mongo向我的 Angular 应用程序添加身份验证功能,但我在app.js 9:1行上收到以下错误:

"Schema hasn't been registered for model "User"" 
'Use mongoose.model(name, schema)',
name: 'MissingSchemaError'

以下是我的app.js:

require('dotenv').config();
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var passport = require('passport');
require('./app_server/models/db');
require('./app_server/config/passport'); ----> This line is the one thats throwing the error


var indexRouter = require('./app_server/routes/index');
var usersRouter = require('./app_server/routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'app_server','views'));
app.set('view engine', 'jade');

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use(passport.initialize());

app.use('/', indexRouter);
app.use('/users', usersRouter);

以下是我的passport.js:

var passport = require('passport');
var LocalStratergy = require('passport-local').Strategy;
var mongoose = require('mongoose');
var User = mongoose.model('User'); ---> Probably the culprit

passport.use(new LocalStratergy({usernameField: 'email'},
function(username, password, done){
User.findOne({email: username}, function(err, user){
if (err) { return done(err); }

if (!user) {
return done(null, false, {
message: 'Incorrect Email.'
});
}

if (!user.validPassword(password)) {
return done(null, false, {
message: 'Incorrect Password.'
});
}
return done(null, user);
});
}
));

以下是我的users.js:

var mongoose = require('Mongoose');
var crypto = require('crypto');
var jwt = require('jsonwebtoken');

var userSchema = new mongoose.Schema({
email: {
type: String,
unique: true,
required: true
},
fullname: {
type: String,
require: true
},
hash: String,
salt: String
});

以下是我的db.js:

var mongoose = require('Mongoose');

var dbURI = "mongodb://localhost:27017/buddhafinds";
mongoose.connect(dbURI);

//Related functions and logs go here

require('./users');

从早上起我就一直在努力解决这个问题。任何帮助将非常感激。谢谢。

最佳答案

在 Passport.js 文件中,您创建一个没有架构的模型

var User = mongoose.model('User');

尝试将模型分配给 users.js 文件中的架构并从那里导出

exports.User = mongoose.model('User', userSchema)

然后只需在您想要的任何文件中要求用户

关于javascript - MongoDB:尚未为模型 "User"注册架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58832387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com