Как исправить ошибку Cast, когда я пытаюсь сохранить информацию в MongoDB - PullRequest
0 голосов
/ 02 апреля 2019

Я настраиваю новый сервер с использованием MongoDB, и я пытаюсь сохранить информацию, используя шаблон ejs и экспресс-маршрут, но когда я пытаюсь у меня есть какая-то ошибка.

это ошибка, которую я имею, я помещаюсхема пола, разделенная в другом файле js, так как, поскольку у меня будет несколько статей с различным полом, не правильно создавать его в отдельном файле, чтобы потом можно было сделать фильтр?

   'Cast to Embedded failed for value "Techno-thriller" at path "genre"',
        name: 'CastError',
        stringValue: '"Techno-thriller"',
        kind: 'Embedded',
        value: 'Techno-thriller',
        path: 'genre',
        reason: [MongooseError] } },
  _message: 'Books validation failed',
  name: 'ValidationError' }

что яя пытаюсь сделать, это сохранить информацию и представить ее на передней

файл модели

const mongoose = require('mongoose');
const { genreSchema } = require('./genres');
const { authorSchema } = require('./author');

const booksSchema = new mongoose.Schema({
  name: String,
  author: {
    type: authorSchema,
  },
  numberInStock: Number,
  image: String,
  genre: {
    type: genreSchema,
  },

});

// const Books = mongoose.model('Book', booksSchema);

// exports.booksSchema = booksSchema;
// exports.Books = Books;

module.exports = mongoose.model('Books', booksSchema);

файл контроллера

controller.createBook = (req, res) => {

  const name = req.body.name;
  const author = req.body.author;
  const genre = req.body.genre;
  const numberInStock = req.body.numberInStock;
  const image = req.body.image;

  let newBook = {

    name: name,
    author: author,
    genre: genre,
    numberInStock: numberInStock,
    image: image,

  };


  Books.create(newBook, (err, newlyCreated) => {
    if (err) {
      console.log(err);
    } else {
      res.redirect('/books/home/1');
    }
  });

файл EJS

<% include partials/header %>
</div>

   <div class="container h-100">
        <div class="row">
            <div class="col-lg-6 col-md-offset-3">
                <h1>Add a New Book</h1>
                <form action="/books/new/create" method="post">
                    <div class="panel panel-default">
                        <div class="panel-body">
                            <div class="form-group">
                                <label for="book_name"> Book Name: </label>
                                <input type="text"  class="form-control" name="name">
                            </div>
                            <div class="form-group">
                                <label for="author_name">Author Name: </label>
                                <input type="text"  class="form-control" name="author">
                            </div>
                            <div class="form-group">
                                <label for="genre">Book genre: </label>
                                <input type="text"  class="form-control" name="genre">
                            </div>
                            <div class="form-group">
                                <label for="numberInStock">Number in stock: </label>
                                <input type="number"  class="form-control" name="numberInStock">
                            </div>
                            <div class="form-group">
                                <label for="image">Image: </label>
                                <input type="text"  class="form-control" name="image">
                            </div>
                            <button type="submit" class="btn btn-success">Success</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>

<% include partials/footer %>```
...