将JSON传递给Jade,并使用相同的数据进行API访问
Passing JSON to Jade and using the same data for API access
我有以下代码作为模式模块:
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);
但这根本不起作用,它给了我未定义的信息,就好像它不存在一样(当记录时)。
如果我修改我的路由器如下:
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 })
});
相关文章:
- AngularJS-需要在index.html页面中访问来自服务的数据
- 如何使用Wordpress'RESTApi访问本地主机上的数据
- 访问令牌和响应数据
- 如何访问高图表工具提示中的任何特定数据
- 将JSON传递给Jade,并使用相同的数据进行API访问
- 访问Protractor/E2E测试中的$http数据(AngularJS)
- 使用Angular.js访问php数组数据
- 访问Twilio短信元数据
- 访问通过XHR.onreadystatechange回调中的XHR.send(data)发送的数据
- Codeigniter Jquery Ajax,Can't将控制器中的数据访问回html表单
- JavaScript IE 从 json 文件中读取数据 访问被拒绝
- 将twitter api1.0迁移到1.1 json数据访问问题
- 管理数据访问/用户权限
- Javascript json数据访问行和字段
- Javascript是否实现了类似SQL的数据访问
- 在猫鼬之上创建一个额外的数据访问层
- 角度.js数据访问器
- JavaScript数据访问设计
- 在bogart中使用承诺数据访问
- 在初始.ajax调用之外使用JSON数据-访问剩余的JSON数据