猫鼬Model.findOne不是函数

时间:2018-10-02 18:21:29

标签: node.js mongoose-models

模型有问题。尝试做model.findOne(),但我不断收到错误

  

TypeError:User.findOne不是函数

我的模型设置如下:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const UserSchema = new Schema({
  firstName: String,
  lastName: String,
  emailAddress: {
    type: String,
    required: true,
    unique: true
  },
  userName: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  }
});

module.export = User = mongoose.model("User", UserSchema);

并将其导入要查找用户的文件中:

const { Strategy, ExtractJwt } = require("passport-jwt");
const log = require("./logger");
require('dotenv').config();
const fs = require("fs");
const secret = process.env.SECRET || 'thisneedstob3ch@ng3D';
const mongoose = require("mongoose");

const User = require("./models/user");

const opts = {
  jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
  secretOrKey: secret
};

module.exports = passport => {
  passport.use(
    new Strategy(opts, (payload, done) => {
      User.findOne({id: payload.id})
        .then(user => {
          if (user) {
            return done(null, {
              id: user.id,
              name: user.name,
              email: user.email
            });
          }
          return done(null, false);
        })
        .catch(err => log.error(err));
    })
  );
};

无论如何,我都会收到错误消息。我已经尝试过.findById().findOne()

有什么我想念的吗?

1 个答案:

答案 0 :(得分:1)

您在user.js文件中输入了错字,却忘记了s中的module.exports

module.exports = User = mongoose.model("User", UserSchema);