Я получаю эту ошибку "Ошибка приведения к строке для значения \" {} \ "по пути \" body \ "" При сохранении данных записи в мою коллекцию mongodb, Nodejs - PullRequest
0 голосов
/ 12 апреля 2019

Я ничего не могу сохранить в мою новую коллекцию mongodb, потому что я получаю эту ошибку

    "message": "Cast to String failed for value \"{}\" at path \"body\""

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

Вот моя схема для этого

const mongoose = require("mongoose");

const ticketSchema = new mongoose.Schema({
  sender: {
    type: String
  },
  body: {
    type: String,
    required: true
  },
  ticketStyle: {
    type: String
  },
  ticketStatus: {
    type: String
  },
  response: {
    type: String,
    required: false
  }
});

const Ticket = mongoose.model("Ticket", ticketSchema);

module.exports = Ticket;

а вот и маршрут

router.post("/support", (req, res) => {
  const body = req.body;
  const sender = "admin";
  const ticketStyle = "userstyle";
  const ticketStatus = "pending";
  const newTicket = new Ticket({
    body,
    sender,
    ticketStyle,
    ticketStatus
  });
  newTicket
    .save()
    .then()
    .catch(error => {
      res.send(error);
    });
});

Я хочу добавить эти сообщения в мою коллекцию, но так как требуется пара ключей "body", и я продолжаю получать эту ошибку, я застрял

1 Ответ

0 голосов
/ 13 апреля 2019

Просто понял проблему (неуклюжую ошибку), это было связано с проблемой, вызванной тем, как я решил назвать свои переменные.Я обновил схему и имена переменных, и все заработало как задумано.

новый маршрут:

router.post("/", (req, res) => {
  const sender = "admin";
  const message = req.body.message;
  const ticketStatus = "pending";
  const ticketStyle = "userTicket";
  const newTicket = new Ticket({
    sender,
    message,
    ticketStyle,
    ticketStatus
  });
  newTicket
    .save()
    .then(tickets => {
      res.redirect(req.originalUrl);
      console.log("Successfully saved to database");
    })
    .catch(err => {
      res.status(400).send("unable to save to database");
      console.log("unable to save to database");
    });
});

И я также обновил имя схемы.

const ticketSchema = new mongoose.Schema({
  sender: {
    type: String,
    required: true
  },
  message: {
    type: String,
    required: true
  },
  ticketStatus: {
    type: String
  },
  ticketStyle: {
    type: String
  },
  reply: {
    type: String
  }
});

Проблема заключалась в запросе данных тела в маршруте как просто req.body, а не req.body.message, поэтому я предполагаю, что код пытался сохранить / использовать весь файл JSON в виде строки(Наверное).

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