私はディレクトリを持っています
view/tasks/index.jade
内部のすべてのファイルをリストしたいのですが、元々、タスクに文字列を追加するnode.jsファイルのテンプレートがあり、タスクページはこれまでに入力されたすべての文字列を出力しますが、リストするように変更したいと思いますindex.jade とその他のファイルを除く、タスク ディレクトリ内のすべてのファイル: 他のすべてのファイルを一覧表示します。以下の変更を実行すると、型エラーが返されます。どんなヒントでも大歓迎です
app.get('/tasks', function(req, res){
Task.find({}, function (err, docs) {
res.render('tasks/index', {
title: 'Tasks index view',
docs: docs
});
});
// list file mod
fs.readdir('tasks/index', function(err, data){
res.render('tasks/index', {"files": data});
});
// list file mod
});
以下は私のindex.jadeファイルです
h1 Your tasks
p
a(href='/tasks/new', class='btn primary') Add a Task
- if(docs.length)
table
tr
th Task
th
each task in docs
tr
td #{task.task}
td
a.btn(href="/tasks/#{task.id}/edit") Edit
- else
p You don't have any tasks!
// list all the file
ul
for file in files
li
p= file
以下は私のエラーです
TypeError: /path/views/tasks/index.jade:22
20| // list all the file
21| ul
> 22| for file in files
23| li
24| p= file
25|
Cannot read property 'length' of undefined
at eval (eval at <anonymous> (path/node_modules/jade/lib/jade.js:166:8), <anonymous>:174:31)
at eval (eval at <anonymous> (/path/node_modules/jade/lib/jade.js:166:8), <anonymous>:217:4)
at Object.<anonymous> (path/node_modules/jade/lib
追加エラー:
500 TypeError: /path/views/tasks/index.jade:22 20| // list all the file 21| ul > 22| for file in files 23| li 24| p= file 25| Cannot read property 'length' of undefined
20| // list all the file
21| ul
> 22| for file in files
23| li
24| p= file
25|
Cannot read property 'length' of undefined
at eval (eval at (/path/node_modules/jade/lib/jade.js:166:8), :174:31)
at eval (eval at (/path/node_modules/jade/lib/jade.js:166:8), :217:4)
at Object. (/path/node_modules/jade/lib/jade.js:167:35)
at ServerResponse.res._render (/path/node_modules/express/lib/view.js:422:21)
更新コード:
var async = require( 'async' );
app.get('/tasks', function(req, res){
var tasks, files;
async.series( [
// Find tasks
function ( callback ) {
Task.find({}, function (err, docs) {
tasks = docs;
callback();
});
},
// Find files
function ( callback ) {
fs.readdir('tasks/index', function(err, data){
files = data;
callback();
});
}
// Render and send response
], function ( error, results ) {
res.render('tasks/index', {
title: 'Tasks index view',
docs: tasks,
files: files
});
} );
});
app.get('/tasks/new', function(req, res){
res.render('tasks/new.jade', {
title: 'New task view'
});
});
app.post('/tasks', function(req, res){
var task = new Task(req.body.task);
task.save(function (err) {
if (!err) {
res.redirect('/tasks');
}
else {
res.redirect('/tasks/new');
}
});
});
app.get('/tasks/:id/edit', function(req, res){
Task.findById(req.params.id, function (err, doc){
res.render('tasks/edit', {
title: 'Edit Task View',
task: doc
});
});
});
app.put('/tasks/:id', function(req, res){
Task.findById(req.params.id, function (err, doc){
doc.updated_at = new Date();
doc.task = req.body.task.task;
doc.save(function(err) {
if (!err){
res.redirect('/tasks');
}
else {
// error handling
}
});
});
});