Expressで構築されたNode.js Webアプリケーションがあり、MongoDBを照会した後にJadeテンプレートを作成しようとしています。これらの値をJadeテンプレートに入力したいと思います。Express/Node.js WebアプリケーションからPugフォームを事前入力する
私が理解できないことは、collection.find()関数内のすべてをコメントにして、 'res.render(' editresource ')のみを持っていても、ビューがレンダリングされない理由です。何か基本的なことを理解していないのですか?
// 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を使用して、またオブジェクト全体を送信ありません。
'docs [0] .name'値の文字列ですか?あれば、値として' viewpost'を使用してください: 'value = viewpost' in **玉** – agit
ああ、そうです。私はその変更のために投稿を編集しました:)残念ながら、まだ動作しません - 私のビューエンジンは現在pugですが。 – huangtt
pugファイルのレンダリング中にエラーメッセージはありますか? – agit