Как бы я исправить X не является конструктором при отправке запроса с использованием Express? - PullRequest
0 голосов
/ 17 апреля 2020

В данный момент создаю приложение для дел и застрял при отправке запроса. Там говорится, что Тодо не конструктор. Почему это происходит и как мне это исправить?

Модели:

const todos = [];

module.exports = { todos };

Контроллеры:

const Todo = require("../models/todo");

const index = (req, res) => {
  res.render("", { todo: Todo.todos });
};

const create = (req, res) => {
  const todo = new Todo(req.body);
  todo.save((err) => {
    if (err) return res.render("");
    console.log(todo);
    res.render("");
  });
};

module.exports = { index, create };

Маршруты:

var express = require("express");
var router = express.Router();
const todosCtrl = require("../controllers/todos");

/* GET home page. */
router.get("/", todosCtrl.index);
router.post("/", todosCtrl.create);

module.exports = router;

И форма E JS:

    <form action="" method="post">
      <input type="text" name="todo" placeholder="Add to do" />
      <input type="submit" value="Add To Do" />
    </form>

1 Ответ

0 голосов
/ 17 апреля 2020

Точно так же, как говорит ошибка, Todo is not a constructor. Если вы хотите сделать new Todo(), вам нужно где-то определить эту функцию Todo, либо как функцию, либо как класс.

То, что у вас есть прямо сейчас, вам будет достаточно всего лишь

const create = (req, res) => {
  const todo = req.body;
  Todo.push(todo);
  res.render('');
};

Хотя, конечно, список задач будет просто массивом в памяти (как вы определил его в каталоге ваших моделей). Синтаксис, который вы используете, подразумевает, что вы можете стремиться к ORM или ODM, например Mon goose или Sequel, для взаимодействия с базой данных.

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