Столкнулись с некоторыми ошибками в работе CRUD?

#javascript #node.js #mongodb #crud

#javascript #node.js #mongodb #crud

Вопрос:

Я создал программу для CRUD, но столкнулся с проблемами с программой контроллера :-

 const Greeting = require("../models/model.js");
exports.create = (req, res) => {
  if (!req.body.message) {
    return res.status(400).send({ message: "Note content can not be empty" });
  }
  const greeting = new Greeting({
    name: req.body.name || "Name Needed",
    message: req.body.message,
  });

  Greeting.pushData(greeting);
};
  

modules.js

 const GreetingSchema = mongoose.Schema(
  {
    name: String,
    message: String,
  },
  {
    timestamps: true,
  }
);
module.exports = mongoose.model("Greeting", GreetingSchema);
const Schema = mongoose.model("Greeting", GreetingSchema);


  pushData = (greeting) => {
     const data = new Schema({
       name: greeting.name,
       message: greeting.message
     });
    data
    .save()
    .then((data) => {
      res.send(data);
    })
    .catch((err) => {
      res
        .status(500)
        .send({
          message: err.message || "Error Occurred while creating Greeting",
        });
    });
  }

module.exports = {pushData};
  

и получение ошибок:
*
Ошибка типа: приветствие не является конструктором
в exports.create (E:ProjectsGreeting-App_backend — Копировать контроллер контроллер.js:9:20)
в Layer.handle [как handle_request] (E:ProjectsGreeting-App_backend — Копироватьnode_modulesexpresslibrouterlayer.js:95:5)
при следующем (E:ProjectsGreeting-App_backend — Копироватьnode_modulesexpresslibrouterroute.js:137:13)*

Ответ №1:

В вашем коде немного ошибок.

  1. Метод pushData должен быть частью схемы, если вы хотите сохранить его внутри моделей и получить доступ через схему модели. Нет необходимости экспортировать pushData, если вы делаете это, как показано ниже.
 GreetingSchema.methods.pushData = (greeting) => {
  // your code
}
module.exports =  mongoose.model("Greeting", GreetingSchema);

  
  1. В контроллере это будет —
 greeting.pushData(greeting);
  

Ответ №2:

Ошибка показывает, что ваша модель приветствия не является конструктором. Проверьте свою модель еще раз, чтобы убедиться, что она находится в правильном формате для создания конструктора в Javascript.

 function Greeting(greeting) {
    this.name = greeting.name;
    this.message = greeting.message;
}