Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法读取属性';长度';未定义的玉石_Javascript_Node.js_Express - Fatal编程技术网

Javascript 无法读取属性';长度';未定义的玉石

Javascript 无法读取属性';长度';未定义的玉石,javascript,node.js,express,Javascript,Node.js,Express,我是nodejs的新手,通过构建一个小项目(博客)来学习它,在提交add post表单详细信息时遇到下面提到的问题。我还为addPost.jade和post.js添加了代码 TypeError: E:\Web projects\NodeJs projects\nodeBlog\views\addpost.jade:19 17| label Category: 18| select.form-control(name='categor

我是nodejs的新手,通过构建一个小项目(博客)来学习它,在提交add post表单详细信息时遇到下面提到的问题。我还为addPost.jade和post.js添加了代码

TypeError: E:\Web projects\NodeJs projects\nodeBlog\views\addpost.jade:19
  17|               label Category:
  18|               select.form-control(name='category')
> 19|                   each cat, i in catList
  20|                       option(value = '#{cat.title}') #{cat.title}
  21|           .form-group
  22|               label Body:

Cannot read property 'length' of undefined
    at eval (eval at <anonymous> (E:\Web projects\NodeJs projects\nodeBlog\node_modules\jade\lib\index.js:218:8), <anonymous>:210:31)
    at eval (eval at <anonymous> (E:\Web projects\NodeJs projects\nodeBlog\node_modules\jade\lib\index.js:218:8), <anonymous>:247:4)
    at eval (eval at <anonymous> (E:\Web projects\NodeJs projects\nodeBlog\node_modules\jade\lib\index.js:218:8), <anonymous>:383:22)
    at res (E:\Web projects\NodeJs projects\nodeBlog\node_modules\jade\lib\index.js:219:38)
    at Object.exports.renderFile (E:\Web projects\NodeJs projects\nodeBlog\node_modules\jade\lib\index.js:380:38)
    at Object.exports.renderFile (E:\Web projects\NodeJs projects\nodeBlog\node_modules\jade\lib\index.js:370:21)
    at View.exports.__express [as engine] (E:\Web projects\NodeJs projects\nodeBlog\node_modules\jade\lib\index.js:417:11)
    at View.render (E:\Web projects\NodeJs projects\nodeBlog\node_modules\express\lib\view.js:126:8)
    at tryRender (E:\Web projects\NodeJs projects\nodeBlog\node_modules\express\lib\application.js:639:10)
    at EventEmitter.render (E:\Web projects\NodeJs projects\nodeBlog\node_modules\express\lib\application.js:591:3)
    at ServerResponse.render (E:\Web projects\NodeJs projects\nodeBlog\node_modules\express\lib\response.js:960:7)
    at E:\Web projects\NodeJs projects\nodeBlog\routes\post.js:89:6
    at Layer.handle [as handle_request] (E:\Web projects\NodeJs projects\nodeBlog\node_modules\express\lib\router\layer.js:95:5)
    at next (E:\Web projects\NodeJs projects\nodeBlog\node_modules\express\lib\router\route.js:131:13)
    at Immediate.<anonymous> (E:\Web projects\NodeJs projects\nodeBlog\node_modules\multer\lib\make-middleware.js:53:37)
    at runCallback (timers.js:655:20)
post.js文件

var express = require('express');
var router = express.Router();
var mongo = require('mongodb');
var db = require('monk')('localhost/nodeblog');
var multer = require('multer');
var uploads = multer({ dest: './public/images/uploads' });




/* home page blog Post. */
router.get('/add', function(req, res, next) {
    var categoryList = db.get('categories');
    categoryList.find({},{}, function (err, categoryList) {
        /*console.log("Categories"+categories);
        categories.forEach(function(category){
            console.log(category.title);
        });*/
        res.render('addPost',{
            "title": "Add Post",
            "catList" : categoryList
        });
    });

});

router.post('/add', uploads.single('mainimage'), function(req, res, next) {
    // get form values
    var title       = req.body.title;
    var category    = req.body.category;
    var body        = req.body.body;
    var author      = req.body.author;
    var date        = new Date();
    console.log("Title"+title);
    console.log("Category"+category);
    console.log("body"+body);
    console.log("Author"+author);
    console.log("Date"+date);

    //Check for image field
    if(req.files && req.files.mainimage){
        console.log('Uploading file...');
        var mainImageOrginalName = req.files.mainimage.originalname;
        var mainImageName = req.files.mainimage.name;
        var mainImageMime = req.files.mainimage.mimetype;
        var mainImagePath = req.files.mainimage.path;
        var mainImageExt = req.files.mainimage.extension;
        var mainImageSize = req.files.mainimage.size;
    }
    else{
        console.log('mainImageFile not found....');
        var mainImageName = 'noimage.png';
    }

    //form Validations
    req.checkBody('title','Title field is required').notEmpty();
    req.checkBody('body','Body field is required').notEmpty();

    var errors = req.validationErrors();

    if(errors){
        res.render('addPost',{
            "errors": errors,
            "title" : title,
            "body" : body
        });
    }else{
        var posts = db.get('posts');

        // add it to db
        posts.insert({
            "title":title,
            "body":body,
            "category": category,
            "date":date,
            "author":author,
            "mainimage":mainImageName
        }, function (err, post) {
            if(err){
                res.send('There was an issue submitting the post');
            }else{
                req.flash('success', "Post Submitted");
                req.location('/');
                req.redirect('/');
            }
        });
    }

    res.render('addpost',{
        "title": "Add Post"
    });
});

module.exports = router;
请帮助我解决这个问题,因为我被困于此

附言:也有帖子被添加


谢谢

问题出在这个代码部分

//表单验证
req.checkBody('title','title字段为必填项')。notEmpty();
req.checkBody('body','body字段为必填项')。notEmpty();
var errors=req.validationErrors();
如果(错误){
//编辑
find({},{},函数(err,categoryList){
res.render('addPost'{
“错误”:错误,
“头衔”:头衔,
“身体”:身体
“catList”:类别列表
});
});
}否则{
var posts=db.get('posts');
//将其添加到数据库中
posts.insert({
“头衔”:头衔,
“身体”:身体,
“类别”:类别,
“日期”:日期,
“作者”:作者,
“mainimage”:mainImageName
},函数(错误,post){
如果(错误){
res.send(“提交帖子时出现问题”);
}否则{
请求flash(“成功”,“提交后”);
请求位置('/');
请求重定向('/');
}
});
}
//具体来说,就是这个
res.render('addpost'{
“标题”:“添加帖子”

});我已经解决了问题,谢谢你的帮助。我已经注释了代码//具体到这个res.render('addpost',{“title”:“addpost”});和需求位置('/');请求重定向('/');这应该是res.location(“/”)和res.redirect(“/”)什么??那么,在地球上,你为什么要写那些代码,而你却可以很容易地把它注释掉呢?它甚至有目的吗?我之所以写这段代码,是因为我在提交时遇到了呈现页面的问题。后来我发现是位置和重定向的错误。而且我不是一个刚开始学习的专家。你好@Tolsee,我还是有麻烦。由于没有填写所有必填字段,我无法在重新加载页面后查看类别值。正在显示验证消息,但不存在类别值。
var express = require('express');
var router = express.Router();
var mongo = require('mongodb');
var db = require('monk')('localhost/nodeblog');
var multer = require('multer');
var uploads = multer({ dest: './public/images/uploads' });




/* home page blog Post. */
router.get('/add', function(req, res, next) {
    var categoryList = db.get('categories');
    categoryList.find({},{}, function (err, categoryList) {
        /*console.log("Categories"+categories);
        categories.forEach(function(category){
            console.log(category.title);
        });*/
        res.render('addPost',{
            "title": "Add Post",
            "catList" : categoryList
        });
    });

});

router.post('/add', uploads.single('mainimage'), function(req, res, next) {
    // get form values
    var title       = req.body.title;
    var category    = req.body.category;
    var body        = req.body.body;
    var author      = req.body.author;
    var date        = new Date();
    console.log("Title"+title);
    console.log("Category"+category);
    console.log("body"+body);
    console.log("Author"+author);
    console.log("Date"+date);

    //Check for image field
    if(req.files && req.files.mainimage){
        console.log('Uploading file...');
        var mainImageOrginalName = req.files.mainimage.originalname;
        var mainImageName = req.files.mainimage.name;
        var mainImageMime = req.files.mainimage.mimetype;
        var mainImagePath = req.files.mainimage.path;
        var mainImageExt = req.files.mainimage.extension;
        var mainImageSize = req.files.mainimage.size;
    }
    else{
        console.log('mainImageFile not found....');
        var mainImageName = 'noimage.png';
    }

    //form Validations
    req.checkBody('title','Title field is required').notEmpty();
    req.checkBody('body','Body field is required').notEmpty();

    var errors = req.validationErrors();

    if(errors){
        res.render('addPost',{
            "errors": errors,
            "title" : title,
            "body" : body
        });
    }else{
        var posts = db.get('posts');

        // add it to db
        posts.insert({
            "title":title,
            "body":body,
            "category": category,
            "date":date,
            "author":author,
            "mainimage":mainImageName
        }, function (err, post) {
            if(err){
                res.send('There was an issue submitting the post');
            }else{
                req.flash('success', "Post Submitted");
                req.location('/');
                req.redirect('/');
            }
        });
    }

    res.render('addpost',{
        "title": "Add Post"
    });
});

module.exports = router;