我有一个使用Express构建的Node.js Web应用程序,我在查询MongoDB后尝试填充Jade模板。我想用这些值填充Jade模板。
我不明白的是为什么即使我在collection.find()函数中注释掉所有内容,并且只有一个&res;#res;(' editresource')& #39; - 视图未呈现。我不理解一些基本的东西吗?
// From pug file (editresource.pug)
extends layout
block content
h1 = title
.main.container
.row
.col-md-6.col-md-offset-3
h1.display-4.m-b-2 Edit Resource
// register form
form(method='POST' action='/edit/editresource')
div.form-group
label(for='name') Name:
input#name.form-control(type='text', name='name', required='', value=locals.dName)
// From Node.js/Express:
router.get('/editresource/:id', function(req, res) {
var db = req.db;
var resource_collection = db.get('resources');
var resourceId = req.params.id;
resource_collection.find({'_id' : resourceId},{},function(e,docs){
// res.render('editresource', {
// name : 'asdf'
// });
//res.locals.dName = docs[0].name;
//res.render('editresource')
res.render('editresource', { 'viewpost' : docs[0].name })
//res.name = docs[0].name;
//res.render('editresource', { name : docs[0].name });
});
// attempting to call res.render('editresource') here does not work??
});
// All of this is fired by this function when a link is clicked
function editResource(event) {
$.ajax({
type: 'GET',
url: '/edit/editresource/' + $(this).attr('rel')
}).done(function( response ) {
if (response.msg === '') {
}
else
alert('Error: ' + response.msg);
});
};
我找到a similar question但是使用res.locals不起作用,也没有发送整个对象。
答案 0 :(得分:0)
要使用发送到pug的变量,您需要正确使用变量名。
div.form-group
label(for='name') Name:
input#name.form-control(type='text', name='name', required='', value=viewpost
答案 1 :(得分:0)
创建一个对象以发送render()
方法。
var renderData = {
dName = docs[0].name
};
res.render('editresource', renderData)
并将输入的值属性的可变名称更改为dName
input#name.form-control(type='text', name='name', required='', value=dName)
答案 2 :(得分:0)
解决!参数正在正确发送但我在客户端收到响应时没有注入html。 (例如$('#wrapper')。html(response);)