Bazı girişler alan, verileri mongo'da saklayan ve verileri formun altındaki görünüme döndüren bir form sayfam var. Ancak, bir kullanıcı formu, yeşim görünümü çöker üzerine yeni veri gönderir ve aşağıdaki hata görüntüler zaman:onsubmit breakks Yeşim görünümü
TypeError: /Users/rhysedwards/Downloads/insightful/food/views/index.jade:29
27| label
28| input.btn.btn-default(name='submit', type='submit', onsubmit="this.submit(); this.reset(); return false;")
> 29| each Entry, i in entries
30| div.title= Entry.title
31| div.url= Entry.url
32| div.selectedDate= Entry.selectedDate
Cannot read property 'length' of undefined
beklenen davranıştır kullanıcı formu ile yeni veri gönderdiğinde, bu formun altına görüntüler olmasıdır. Neden Entry
neden tanımsız hale gelir, ancak veriler gönderilmeden önce hala görüntülenir?
Yönlendirici
router.get('/', function(req, res, next){
Entry.find({}, function (err, entries) {
res.render('index', {
"entries": entries
});
});
});
Jade
block content
.container
h1 London Plans
form(method='post' action='post', class='plans', id='plans')
.form-group
label Do you have a link?
input.form-control(name='search', id='search' type='url', required='required')
h2#title
.form-group
label What looks cool?
input.form-control(name='title', type='text', required='required' class='title')
.form-group
label When is it?
label
input(type='checkbox' name='week' value='week')
span This week
label
input(type='checkbox' name='month' value='month')
span This Month
label
input(type='checkbox' id='date')
span Date
label
input(type='textbox' class='datepicker' name='date' value='')
label
input.btn.btn-default(name='submit', type='submit', onsubmit="this.submit(); this.reset(); return false;")
each Entry, i in entries
div.title= Entry.title
div.url= Entry.url
div.selectedDate= Entry.selectedDate
Mesaj fonksiyonu
router.post('/post', function(req, res, next) {
var url = req.body.search;
var title = req.body.title;
var week = req.body.week;
var month = req.body.month;
var date = req.body.date;
console.log(url + ' ' + title + ' ' + week + ' ' + month + ' ' + date);
//FIND WHICH DATE WAS SELECTED BY USER AND ASSIGN THAT TO selectedDate
if (typeof week != 'undefined'){
var selectedDate = 'week';
} else if (typeof month != 'undefined') {
var selectedDate = 'month';
} else {
var selectedDate = date;
};
//CREATE NEW OBJECT
var data = new Entry ({
url: url,
title: title,
selectedDate: selectedDate
})
//STORE NEW OBJECT TO THE DB
Entry.createEntry(data, function(err, entry){
if (err) throw err;
console.log(entry);
})
//RENDER THE HOMEPAGE TO CLEAR THE FORM
res.render('index');
return false;
});
Sayfadaki son kod satırında girişsiz sayfalar oluşturuyorsunuz. 'Res.render' ('index', {entries: []}), ' – baao