Я пытаюсь создать пользовательскую модель, но я получаю MissingSchemaError - PullRequest
0 голосов
/ 07 мая 2019

Я пытаюсь создать пользовательскую модель в Node.js и Mongoose, но получаю ошибку:

MissingSchemaError : Schema hasn't been registered for the model "user"

Я пытался исправить это с помощью следующих сайтов, но этоне работает для меня.

Как зарегистрироваться и вызвать схему в mongoose

https://github.com/Automattic/mongoose/issues/3105

Модель пользователя

const mongoose = require("mongoose");

const UserSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  password: {
    type: String,
    required: true
  },
  avatar: {
    type: String
  },
  status: {
    type: Boolean,
    default: false
  },
  date: {
    type: Date,
    default: Date.now
  }
});

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

user.js

const express = require("express");
const gravatar = require("gravatar");
const bcrypt = require("bcryptjs");
const router = express.Router();
const { check, validationResult } = require("express-validator/check");
// const User = require("../../models/User");

// @route POST api/users
// @desc Register user
// @access Public

    enter code here`
router.post(
  "/",
  [
    check("name", "Name is required")
      .not()
      .isEmpty(),
    check("email", "Please include valid Email").isEmail(),
    check(
      "password",
      "Please enter a password with 6 or more characters"
    ).isLength({
      min: 6
    })
  ],
  async (req, res) => {
    const errors = validationResult(req);
    if (!errors.isEmpty()) {
      console.log(errors);
      return res.status(400).json({ errors: errors.array() });
    }

    const { name, email, password } = req.body;

    try {
      let user = await User.findOne({ email });
      if (user) {
        res.status(400).json({
          errors: [{ msg: "User Already Exists" }]
        });
      }

      const avatar = gravatar.url(email, {
        s: "200",
        r: "pg",
        d: "mm"
      });

      user = new User({
        name,
        email,
        avatar,
        password
      });

      const salt = await bcrypt.genSalt(10);

      user.password = await bcrypt.hash(password, salt);

      await user.save();

      res.send("User Route");
    } catch (err) {
      console.error(err.message);
      res.status(500).send("Sever Error");
    }
  }
);

Как мне создать эту модель?

Ответы [ 2 ]

0 голосов
/ 07 мая 2019

На самом деле, вы не передали Схему в Модели, вы передали Строку "UserSchema", вам нужно передать UserSchema

const User = mongoose.model("user", UserSchema); 
module.exports = {User}

и потребовать

const {User} = require(PATH TO MODEL)
0 голосов
/ 07 мая 2019

Попробуйте изменить пользователя на пользователя с заглавными буквами при регистрации вашей модели и удалите User после module.exports следующим образом:

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