res.render 在节点中,控制器响应玉
res.render in node with controller response to jade
这是我模型的一部分
router.get('/subscription', function (req, res, next) {
var membership = require('../controllers/membership.js');
var jData = membership.getAll(req, res);
res.render('subscription', { title: 'Subscription', data : jData });
});
这是我的一部分 controller.js
var db = require('../db.js');
module.exports = {
//home: function (req, res, next) {
// res.send('home page');
//},
insert: function (req, res) {
var body = req.body; //_.pick(req.body, 'description', 'completed');
db.membership.create(body).then(function (membership) {
res.json(membership.toJSON());
}, function (e) {
res.status(500).json(e);
});
},
updateById: function (req, res, next) {
//var Id = parseInt(req.params.id, 10);
var body = req.body;
db.membership.update(body, { where: { id: parseInt(_.propertyOf(body)('id'), 10) } }).then(function (membership) {
if (!!membership) {
res.json(membership.toJSON());
} else {
res.status(404).send();
}
}, function (e) {
res.status(500).json(e);
});
},
deleteById: function (req, res, next) {
//var Id = parseInt(req.params.id, 10);
var body = req.body;
db.membership.destroy({ where: { id: parseInt(_.propertyOf(body)('id'), 10) } }).then(function (membership) {
if (!!membership) {
console.log('The Row with the Id : ' + _.propertyOf(body)('id') + ' deleted successfully!');
} else {
res.status(404).send();
}
}, function (e) {
res.status(500).json(e);
});
},
deleteAll: function (req, res, next) {
db.membership.truncate().then(function () {
console.log('All rows deleted successfully!');
}, function (e) {
res.status(500).json(e);
});
},
getById: function (req, res) {
var Id = parseInt(req.params.id, 10);
db.membership.findById(Id).then(function (membership) {
if (!!membership) {
console.log('\n\nMEMBERSHIP : ' + JSON.stringify(membership.toJSON()));
res.json(membership.toJSON());
//return membership.toJSON();
} else {
res.status(404).send();
}
}, function (e) {
res.status(500).send();
});
},
getAll: function (req, res) {
var where = {};
db.membership.findAll({
where: where
}).then(function (membership) {
res.json(membership.toJSON());
}, function (e) {
res.status(500).send();
});
}
};
我正在尝试在我的模型数据中获取 aal 数据,所以控制器中没有问题
但是 res.render 函数数据无法传递给 jade。
根据我的说法 res.render 在 jdata 变量填充之前调用函数。
关于它的任何解决方案告诉我。
提前致谢
你不能发送两次响应,如果你在控制器中发送res你不能在模型中再次发送,你应该使用回调:
控制器:
getAll: function(cb) {
var where = {};
db.membership.findAll({
where: where
}).then(function(membership) {
cb({
data: membership.toJSON()
});
}, function(e) {
cb({
error: e
});
});
}
型号:
router.get('/subscription', function (req, res, next) {
var membership = require('../controllers/membership.js');
var jData = membership.getAll(function (cb) {
if (cb.error) res.status(400).send();
res.render('subscription', { title: 'Subscription', data : cb.data });
});
});
这是我模型的一部分
router.get('/subscription', function (req, res, next) {
var membership = require('../controllers/membership.js');
var jData = membership.getAll(req, res);
res.render('subscription', { title: 'Subscription', data : jData });
});
这是我的一部分 controller.js
var db = require('../db.js');
module.exports = {
//home: function (req, res, next) {
// res.send('home page');
//},
insert: function (req, res) {
var body = req.body; //_.pick(req.body, 'description', 'completed');
db.membership.create(body).then(function (membership) {
res.json(membership.toJSON());
}, function (e) {
res.status(500).json(e);
});
},
updateById: function (req, res, next) {
//var Id = parseInt(req.params.id, 10);
var body = req.body;
db.membership.update(body, { where: { id: parseInt(_.propertyOf(body)('id'), 10) } }).then(function (membership) {
if (!!membership) {
res.json(membership.toJSON());
} else {
res.status(404).send();
}
}, function (e) {
res.status(500).json(e);
});
},
deleteById: function (req, res, next) {
//var Id = parseInt(req.params.id, 10);
var body = req.body;
db.membership.destroy({ where: { id: parseInt(_.propertyOf(body)('id'), 10) } }).then(function (membership) {
if (!!membership) {
console.log('The Row with the Id : ' + _.propertyOf(body)('id') + ' deleted successfully!');
} else {
res.status(404).send();
}
}, function (e) {
res.status(500).json(e);
});
},
deleteAll: function (req, res, next) {
db.membership.truncate().then(function () {
console.log('All rows deleted successfully!');
}, function (e) {
res.status(500).json(e);
});
},
getById: function (req, res) {
var Id = parseInt(req.params.id, 10);
db.membership.findById(Id).then(function (membership) {
if (!!membership) {
console.log('\n\nMEMBERSHIP : ' + JSON.stringify(membership.toJSON()));
res.json(membership.toJSON());
//return membership.toJSON();
} else {
res.status(404).send();
}
}, function (e) {
res.status(500).send();
});
},
getAll: function (req, res) {
var where = {};
db.membership.findAll({
where: where
}).then(function (membership) {
res.json(membership.toJSON());
}, function (e) {
res.status(500).send();
});
}
};
我正在尝试在我的模型数据中获取 aal 数据,所以控制器中没有问题 但是 res.render 函数数据无法传递给 jade。 根据我的说法 res.render 在 jdata 变量填充之前调用函数。 关于它的任何解决方案告诉我。 提前致谢
你不能发送两次响应,如果你在控制器中发送res你不能在模型中再次发送,你应该使用回调:
控制器:
getAll: function(cb) {
var where = {};
db.membership.findAll({
where: where
}).then(function(membership) {
cb({
data: membership.toJSON()
});
}, function(e) {
cb({
error: e
});
});
}
型号:
router.get('/subscription', function (req, res, next) {
var membership = require('../controllers/membership.js');
var jData = membership.getAll(function (cb) {
if (cb.error) res.status(400).send();
res.render('subscription', { title: 'Subscription', data : cb.data });
});
});