我有以下代码作为模式模块:
router.get('/', function(req, res) {
Module.find(function (err, modules) {
if (!err) {
return res.json(modules);
} else {
res.statusCode = 500;
log.error('Internal error(%d): %s', res.statusCode, err.message);
return res.json({
error: 'Server error'
});
}
});
});
这对我的 API 来说工作正常,但我也在尝试使用这些数据将其加载到我的 Jade 模板中。
var modules = require('./routes/modules');
// home page
app.get('/', function(req, res) {
res.render('index', { modules: modules })
});
app.use('/api/modules', modules);
但这根本行不通,它给我 undefined 就好像它不存在一样(记录时)。
如果我将路由器修改为以下内容:
res.render('index', {
modules: modules
})
它可以很好地获取数据,但在通过我的 API 访问数据时却不行。
所以我的问题是,如何将这段特定的代码用于我的 API 并将其呈现给 Jade 模板。
最佳答案
您将模块用作中间件是不正确的。即
app.use('/api/modules', modules);
如 http://expressjs.com/en/guide/using-middleware.html 中所述,你的中间件应该调用 next() 函数。
app.use(function (req, res, next) {
console.log('Time:', Date.now());
next();
});
要解决这个问题,您应该定义类似于索引路由的路由,但您将使用 res.send。
var modules = require('./routes/modules');
// home page
app.get('/', function(req, res) {
res.render('index', { modules: modules })
});
app.get('/api/modules', function(req, res) {
res.send({ modules: modules })
});
关于javascript - 将 JSON 传递给 Jade 并使用相同的数据进行 API 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127642/