я получаю некоторые проблемы с моим приложением прямо сейчас ...MissingSchemaError: Схема не была зарегистрирована для модели «неопределенном»
так это мой models.js:
var mongoose = require('mongoose');
var User = new mongoose.Schema({
username: String,
password: String,
created_at: {type: Date, default: Date.now}
});
var Beep = new mongoose.Schema({
created_by: { type: Schema.ObjectId, ref: 'User' },
created_at: { type: Date, default: Date.now},
text: String
});
//declaration of models with respective schemas
module.exports = mongoose.model('User', User);
module.exports = mongoose.model('Beep', Beep);
I использую паспорт для части аутентификации и ниже является частью моего паспорта-init.js
var mongoose = require('mongoose');
var User = mongoose.model(User);
var LocalStrategy = require('passport-local').Strategy;
var bCrypt = require('bcrypt-nodejs');
module.exports = function(passport){
passport.serializeUser(function(user, result) {
console.log('serializing user:', user._id);
//return the unique id for the user (the default id provided by mongoDB)
return result(null, user._id);
});
passport.deserializeUser(function(username, result) {
User.findById(id, function(err, user){
//in case there's a mongoDB error
if (err){
return result (err, false);
}
//If no user with this username is found
if (!user){
return result('user '+ username + 'not found', false);
}
return result(null,user);
});
теперь app.js:
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var passport = require('passport');
var session = require('express-session');
var mongoose = require('mongoose');
// Initialize models
require('./models/models');
//connection to mongoDB database
mongoose.connect("mongodb://localhost:27017/bipperDB");
var api = require('./routes/api');
var authenticate = require('./routes/authenticate')(passport);
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(session({
secret: 'super secret'
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use (passport.initialize());
app.use (passport.session());
// Initialize Passport
var initPassport = require('./passport-init');
initPassport(passport);
app.use('/api', api);
app.use('/auth', authenticate);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
И я получаю эту ошибку:
throw new mongoose.Error.MissingSchemaError(name);
^
MissingSchemaError: Schema hasn't been registered for model "undefined".
Use mongoose.model(name, schema)
at Mongoose.model (C:\wamp64\www\Bipper\node_modules\mongoose\lib\index.js:362:13)
at Object.<anonymous> (C:\wamp64\www\Bipper\passport-init.js:5:21)
сделано, но теперь он говорит: Ошибка: Не удается найти модуль «User» –
ооо вам просто нужно дать вашей модели путь к файлу, где вы определили схему – abdulbarik
вы можете быть более конкретный, пожалуйста? Я не понял тебя, я немного истощен на самом деле. –