1. ホーム
  2. node.js

[解決済み] Route.get()でコールバック関数が必要だが、"object Undefined "と表示された。

2022-02-17 14:09:30

質問

Todoアプリの作成を勉強しています。 私が勉強しているサイトでは https://coderwall.com/p/4gzjqw/build-a-javascript-todo-app-with-express-jade-and-mongodb

説明書の通りに入力しました。

[app.js]
var main = require('./routes/main');
var todo = require('./routes/todo');
var todoRouter = express.Router();
app.use('/todos', todoRouter);
app.get('/', main.index);
todoRouter.get('/',todo.all);
todoRouter.post('/create', todo.create);
todoRouter.post('/destroy/:id', todo.destroy);
todoRouter.post('/edit/:id', todo.edit);

[/routes/todo.js]
module.exports ={
  all: function(req, res){
    res.send('All todos');
  },
  viewOne: function(req, res){
    console.log('Viewing '+req.params.id);
  },
  create: function(req, res){
    console.log('Todo created');
  },
  destroy: function(req, res){
    console.log('Todo deleted');
  },
  edit: function(req, res){
    console.log('Todo '+req.params.id+' updated');
  }
};

というエラーメッセージが表示されました。

エラーです。Route.get()はコールバック関数を必要としますが、[object]を取得しました。 未定義] です。

何か見落としがあったのでしょうか?

解決方法は?

チュートリアルでは todo.all が返されます。 callback オブジェクトを作成します。これは router.get の構文があります。

ドキュメントより

router.METHOD(path, [コールバック, ...] コールバック)

router.METHOD() メソッドは、ルーティング機能を提供します。 ここで、METHOD は GET、PUT などの HTTP メソッドの一つです。 POST などのように小文字で表記します。したがって、実際のメソッドは router.get(), router.post(), router.put(), など。

の配列を定義する必要があります。 callback オブジェクトを todo ファイルにアクセスできるようにするため、適切な callback オブジェクトを作成します。 router .

チュートリアルを見ていると todo.js の配列が含まれています。 callback オブジェクトにアクセスします。 todo.all ):

module.exports = {
    all: function(req, res){
        res.send('All todos')
    },
    viewOne: function(req, res){
        console.log('Viewing ' + req.params.id);
    },
    create: function(req, res){
        console.log('Todo created')
    },
    destroy: function(req, res){
        console.log('Todo deleted')
    },
    edit: function(req, res){
        console.log('Todo ' + req.params.id + ' updated')
    }
};