错误:MERN中的“ User.findOne不是函数”

时间:2020-04-11 11:43:44

标签: node.js reactjs express mongoose

因此,我正在尝试使用MERN(MongoDB,Express,React,NodeJS)中的通行证来构建身份验证系统。

我完成了所有设置,并与NodeJS进行了连接

问题是当我尝试登录或注册时显示给我, 控制台中出现此错误“ User.findOne不是函数”,我试图通过查找任何错误进行修复 输入错误或用谷歌搜索,但我没有在网上找到任何内容。

有人有类似的错误并予以解决吗,还是有人知道如何? 型号代码:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const ObjectId = Schema.ObjectId;


const UserSchema = new Schema ({

    password: String,
    email: String,

}, {
    collection: 'information'
})

const User = mongoose.model('information', UserSchema);

module.exports - User;


护照代码:

const Strategy = require('passport-local').Strategy
const mongoose = require('mongoose')
const User = require('../models/user');
const bcrypt = require('bcryptjs')

const salt = bcrypt.genSaltSync(10);

const SignupStrategy = new Strategy ({ passReqToCallback:true, usernameField: 'email' }, function(req, email, password, done){ 

    User.findOne({email: req.body.email}).lean().exec((err, user) => {
        if (err) {
            return done(err, null);
        }

        if (user) {
            return done("User already exist", null);
        }
        const encryptedPassword = bcrypt.hashSync(password, salt);
        let newUser = new User({
            email,
            password: encryptedPassword

        })

        newUser.save((error, inserted) => {
            if (error) {
                return done(error, null);
            }

            delete inserted.password;
            return done(null, inserted);

        })

    })

});

module.exports = SignupStrategy;

节点服务器:

const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const passport = require('./passport/');
const PORT = process.env.PORT || 8080;

const mongoose = require('mongoose');

//I have used password in mongo I just did <password> for security reasons.

const mongoString = mongoose.connect('mongodb+srv://herpryth:<password>@nowyourguest-ga5vy.gcp.mongodb.net/users?retryWrites=true&w=majority', {useNewUrlParser: true})


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


const app = express();

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());

app.use('/', indexRouter);
app.use('/authentication', usersRouter);
app.use(passport.initialize());
app.use(passport.session());

app.listen(process.env.PORT || 8080, process.env.IP || '0.0.0.0');

module.exports = app

路线:

const express = require('express');
const app = express.Router();
const passport = require('../passport')

app.post('/signup', (req, res, next) =>{

  passport.authenticate('local-signup', function(error, user, info){

    if (error) {
      return res.status(500).json({

        message: error || 'Something happend',
        error : error.message || "Server error"

      });  
    }
    return res.json(user);
  })(req, res, next);

})

app.post('/signin', function(req, res, next){

  passport.authenticate('local-signin', function(error, user, info){

    if (error) {
      return res.status(500).json({

        message: error || 'Something happend',
        error : error.message || "Server error"

      });  
    }
    return res.json(user);
  })(req, res, next);

})

module.exports = app;

反应服务器:

const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const passport = require('./passport/');
const PORT = process.env.PORT || 8080;

const mongoose = require('mongoose');

const mongoString = mongoose.connect('mongodb+srv://herpryth:XFXGJakc18wBJLIk@nowyourguest-ga5vy.gcp.mongodb.net/users?retryWrites=true&w=majority', {useNewUrlParser: true})


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


const app = express();

app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());

app.use('/', indexRouter);
app.use('/authentication', usersRouter);
app.use(passport.initialize());
app.use(passport.session());

app.listen(process.env.PORT || 8080, process.env.IP || '0.0.0.0');


module.exports = app

有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:0)

您的代码中只有一个简单的错误 替换为

 module.exports = User

 module.exports - User