Node.js пн goose model.findOne не является функцией - PullRequest
0 голосов
/ 03 февраля 2020

Возникла проблема с моделью. Пытаюсь сделать model.findOne (), но я получаю ошибку

Ошибка:

TypeError: User.findOne(...).than is not a function

Я определенно установил mon goose, но, похоже, я больше не импортирую mon goose или модель User соответственно? Не уверен.

Пользователь. js (модель)

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

module.exports = User => {
    var UserSchema = new Schema({    
        name: String,
        email: { type: String, unique: true },
        password: String,
        passwordResetToken: String,
        passwordResetExpires: Date,
        document: String,
        profile_picture: String,
        ocupation: { type: Schema.Types.ObjectId, ref: 'Ocupation' },
        is_admin: { type: Boolean, default: false },
        sector: { type: Schema.Types.ObjectId, ref: 'Sector' },
        is_manager: { type: Boolean, default: false },
        group: { type: Schema.Types.ObjectId, ref: 'Group' },
        is_team_leader: { type: Boolean, default: false },
        can_start: { type: Boolean, default: true },
        isVerified: { type: Boolean, default: false },
        created_at: { type: Date, default: Date.now },
        updated_at: { type: Date, default: Date.now },
        deleted_at: Date,
    }, {
        toJSON: {
            virtuals: true
        }
    })

    UserSchema.virtual('profile_url').get(function() {
        return `http://${process.env.HOST}:${process.env.NODE_ENV ? process.env.DEV_PORT : process.env.PORT}/3e002f70cbf8805c904bf1536a22a52e/${this.profile_picture}`
    })

    return mongoose.model('Users', UserSchema)
}

UserController. js

const User = require('../models/User')

myfunction(req, res) {
    const { name, email } = req.body

    let checkEmail = await User.findOne({ email })
}

что не так?

Ответы [ 2 ]

1 голос
/ 03 февраля 2020

Вы экспортируете не модель, а фабричную (?) Функцию для генерации модели. Просто удалите:

module.exports = User => {

и вместо этого отредактируйте оператор return на:

module.exports = mongoose.model('Users', UserSchema');

Кроме того, обратите внимание, что обычно хорошей идеей является определение модели в единственном виде: User, а не Users.

0 голосов
/ 03 февраля 2020

Вам нужно будет создать ссылку на ваш model, а затем экспортировать ее для использования в качестве ссылки на Schema

Как это,

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

    var UserSchema = new Schema({    
        name: String,
        email: { type: String, unique: true },
        password: String,
        passwordResetToken: String,
        passwordResetExpires: Date,
        document: String,
        profile_picture: String,
        ocupation: { type: Schema.Types.ObjectId, ref: 'Ocupation' },
        is_admin: { type: Boolean, default: false },
        sector: { type: Schema.Types.ObjectId, ref: 'Sector' },
        is_manager: { type: Boolean, default: false },
        group: { type: Schema.Types.ObjectId, ref: 'Group' },
        is_team_leader: { type: Boolean, default: false },
        can_start: { type: Boolean, default: true },
        isVerified: { type: Boolean, default: false },
        created_at: { type: Date, default: Date.now },
        updated_at: { type: Date, default: Date.now },
        deleted_at: Date,
    }, {
        toJSON: {
            virtuals: true
        }
    })

    UserSchema.virtual('profile_url').get(function() {
        return `http://${process.env.HOST}:${process.env.NODE_ENV ? process.env.DEV_PORT : process.env.PORT}/3e002f70cbf8805c904bf1536a22a52e/${this.profile_picture}`
    })

    var User = mongoose.model('Users', UserSchema)

module.exports = User;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...