我正在学习制作Todo应用程序.

我按说明书上的说明打字,

[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');
  }
};

我收到了这个错误信息

错误:路由.get()需要回调函数,但得到了一个[object]

我错过什么了吗?

推荐答案

在本教程中,todo.all返回callback对象.这是router.get语法所必需的.

从文件中:

router.METHOD(path, [callback, ...] callback)

路由.METHOD()方法在中提供路由功能

您仍然需要在todo个文件中定义callback个对象的数组,以便为router访问适当的callback个对象.

从教程中可以看到,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')
    }
};

Node.js相关问答推荐

我的位置也移动时左右拖动谷歌 map

如何解决TypeError:requ.isAuthenticated不是函数错误?

NPM:一般的npm二进制依赖可以静态构建吗?

无法使用Sequelize连接AWS RDS

MongoDB如果文档S的字段小于另一个字段,则将该字段加一

"sh:/usr/local/bin/node:当它存在于文件目录中时未找到

如何在Mongoose for MongoDB中编写此查询

即使卷已设置,Docker Nodemon 也不会热重载

使用pm2启动服务器

bcrypt.compare 每次都返回 false

NodeJS `request` 库无法通过 multipart-form-data 将文件发布到 dotnet 服务器

如何解决未调用 Express 错误处理程序的问题

如何在没有云功能的情况下使用 Google PubSub

如何使用 Jest 模拟异步函数的延迟时间

我怎样才能让`git`失败而不是要求提供凭据

AWS EC2 npm install 突然很慢

如果我使用像 express 这样的 node 服务器,是否需要 webpack-dev-server

使用 nvm-windows 时更新 npm

Node.js 连接仅适用于本地主机

如何从 find 方法返回 Mongoose 结果?