【发布时间】:2016-07-19 10:01:55
【问题描述】:
我用的是express,自带jade模板引擎。 app.js
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
对于每个模板,我都需要 res.render 来渲染 html 标头,如果我不使用 res.render,模板/页面将不会显示。 routes/index.js
router.get('/', function(req, res, next) {
res.render('index', { title: 'Bookshop' });
});
router.get('/data', function(req, res, next) {
res.render('data', { title: 'Bookshop | Categories' });
});
router.get('/items', function(req, res, next) {
res.render('items', { title: 'Bookshop | Items' });
});
在 app.js 中,我的 MongoDB 设置正确。
var mongojs = require('mongojs');
var db = mongojs('book', ['books']);
我要实现的是将 MongoDB 数据库传递给 angular,然后循环输入到玉文件中。 myscript.js
app.controller('appCtrl', function ($scope, $http) {
$http.get('/data').then(function(res){
console.log(res.data);
$scope.books = res.data;
});
});
data.jade 文件如下所示
p(ng-repeat="item in books")
span {{item.name}}
span {{item.barcode}}
span {{item.price}}
现在我被困在如何将数据库传递给 myscript.js 上。我无法在 app.js
中这样做router.get('/data', function(req, res, next) {
var db = req.db;
db.zero.find(function (err, docs) {
res.json(docs)
});
});
原因是使用了jade模板,需要使用res.render才能正确显示页面,但是如果我使用router.get('/data', function(req, res, next) {
res.render('data', { title: 'Bookshop | Categories' });
});我无法通过数据库。
我了解我无法同时使用 res.render 和 res.json。有没有将数据库传递给角度的解决方案?还是我必须将玉转换为 html?我确定如果我使用 html 文件,我可以使用res.json
谢谢
【问题讨论】:
-
你不能两者都做。
res.json只发送数据,res.render将渲染传递给 render 方法的模板。你想要什么?你能解释一下吗? -
我需要将 DB 传递给 angular,但如果我没有 res.render,我的页面就会出错。看起来只有 res.json 可以成功发送 DB,所以如果有办法让模板渲染也可以通过 DB,谢谢
-
将 DB 传递给 Angular 是什么意思?我已经可以看到您正在将文档从 mongo DB 传递回您的客户。
标签: angularjs node.js mongodb express