Ошибка приведения к ObjectID для значения "5e54c953031de84cd86b22a0" по пути "author" - PullRequest
1 голос
/ 27 февраля 2020

Я хочу вставить свою книгу в коллекционную книгу. В книге у меня есть поле author, являющееся частью другой коллекции под названием Author. Я пытаюсь вставить книгу, но у меня есть Mon goose casterror. Это мой код:

const mongoose = require('mongoose')
const path = require('path')

const coverImageBasePath = 'uploads/bookCovers'

const bookSchema = new mongoose.Schema({
  title: {
    type: String,
    required: true
  },
  description: {
    type: String
  },
  publishDate: {
    type: Date,
    required: true
  },
  pageCount: {
    type: Number,
    required: true
  },
  createdAt: {
    type: Date,
    required: true,
    default: Date.now
  },
  coverImageName: {
    type: String,
    required: true
  },
  author: {
    type: mongoose.Types.ObjectId,
    required: true,
    ref: 'Author'
  }
})
module.exports = mongoose.model('Book', bookSchema)

И это почтовый маршрутизатор для создания книги

router.post('/', upload.single('cover'), async (req, res) => {
  const fileName = req.file != null ? req.file.filename : null
  const book = new Book({
    title: req.body.title,
    author: req.body.author,
    publishDate: new Date(req.body.publishDate),
    pageCount: req.body.pageCount,
    coverImageName: fileName,
    description: req.body.description
  })

  try {
    const newBook = await book.save()
    // res.redirect(`books/${newBook.id}`)
    res.redirect(`books`)
  } catch (err) {
    console.log(err)
    if (book.coverImageName != null) {
      removeBookCover(book.coverImageName)
    }
    renderNewPage(res, book, true)
  }
})
async function renderNewPage(res, book, hasError = false) {
  try {
    const authors = await Author.find({})
    const params = {
      authors: authors,
      book: book
    }
    if (hasError) params.errorMessage = 'Error Creating Book'
    res.render('books/new', params)
  } catch {
    res.redirect('/books')
  }
}

Я попробовал какое-то решение и гуглил, но оно не сработало, когда я вставлял прямо автором Строка, это работает, так что я думаю, что ошибка в схеме goose, но я не могу найти способ ее решить. Пожалуйста, помогите мне.

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