【发布时间】:2014-05-25 23:06:10
【问题描述】:
我正在关注精彩的 node-express-mongoose-demo 应用程序 (link
在articles.js 控制器中,.load 函数有一个next() 语句,我对此感到困惑——我认为next() 仅用于路由,将流传递给下一个中间件。为什么在控制器内部使用 next()?为什么其他控制器功能(例如 .edit ,请参见下面的代码)不使用 next()..?
/**
* Module dependencies.
*/
var mongoose = require('mongoose')
, Article = mongoose.model('Article')
, utils = require('../../lib/utils')
, extend = require('util')._extend
/**
* Load
*/
exports.load = function(req, res, next, id){
var User = mongoose.model('User')
Article.load(id, function (err, article) {
if (err) return next(err)
if (!article) return next(new Error('not found'))
req.article = article
next()
})
}
....
/**
* Edit an article
*/
exports.edit = function (req, res) {
res.render('articles/edit', {
title: 'Edit ' + req.article.title,
article: req.article
})
}
【问题讨论】:
标签: node.js express functional-programming