#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:
В вашем коде немного ошибок.
- Метод pushData должен быть частью схемы, если вы хотите сохранить его внутри моделей и получить доступ через схему модели. Нет необходимости экспортировать pushData, если вы делаете это, как показано ниже.
GreetingSchema.methods.pushData = (greeting) => {
// your code
}
module.exports = mongoose.model("Greeting", GreetingSchema);
- В контроллере это будет —
greeting.pushData(greeting);
Ответ №2:
Ошибка показывает, что ваша модель приветствия не является конструктором. Проверьте свою модель еще раз, чтобы убедиться, что она находится в правильном формате для создания конструктора в Javascript.
function Greeting(greeting) {
this.name = greeting.name;
this.message = greeting.message;
}