TypeError:无法将属性“标题”设置为 null
Posted
技术标签:
【中文标题】TypeError:无法将属性“标题”设置为 null【英文标题】:TypeError: Cannot set property 'title' of null 【发布时间】:2019-04-18 22:20:54 【问题描述】:我也是 nodejs 和 expressjs mongoose 的新手,我在这些 sn-ps 中遇到了错误。
/* POST 编辑类别*/
router.post('/edit-category/:id', function (req, res)
var title = req.body.title;
var slug =title.replace(/\s+/g, '-').toLowerCase();
var id = req.body.id;
var errors = req.validationErrors();
if (errors)
res.render('admin/edit_category',
errors: errors,
title: title,
id: id
);
else
Category.findOne(slug:slug, _id: '$ne': id , function (err, category)
if (category)
req.flash('danger', ' Category Title exists , choose another.');
res.render('admin/edit_category',
title: title,
id: id
);
else
Category.findById(id, function (err, category)
if (err)
return console.log(err);
category.title = title;
category.slug = slug;
category.save(function (err)
if (err)
return console.log(err);
req.flash('success', 'Category editted!');
res.redirect('/admin/categories/edit-category/' +id);
);
);
);
);
在 D:\projects\cmscart\routes\admin_categories.js:142:36 在模型.查询。 (D:\projects\cmscart\node_modules\mongoose\lib\model.js:3407:16) 在 D:\projects\cmscart\node_modules\kareem\index.js:259:21 在 D:\projects\cmscart\node_modules\kareem\index.js:127:16 在 _combinedTickCallback (内部/进程/next_tick.js:132:7) 在 process._tickCallback (internal/process/next_tick.js:181:9)
【问题讨论】:
console.log(req.body)
的值是多少?
但是我用过这个
添加行:console.log(req.body);
以上:var title = req.body.title;
。尝试向该端点发出 post 请求并向我们展示结果。
title: 'food3' 如果我将 title 的值输入为 food3
它最有可能来自category.title = title;
这一行 - 你会添加一个console.log(category)
行并让我们知道category
是什么吗?
【参考方案1】:
使用
res.redirect('/admin/categories/edit-category/' +category.slug);
而不是
res.redirect('/admin/categories/edit-category/' +id);
并在 edit-category.ejs
(您的编辑页面)上方提交按钮
<input type="hidden" name="id" value="<%=id%>">
【讨论】:
以上是关于TypeError:无法将属性“标题”设置为 null的主要内容,如果未能解决你的问题,请参考以下文章
CS50 Uncaught TypeError:无法将属性“禁用”设置为 null [重复]
TypeError:无法将属性'innertext'设置为null
反应:TypeError:无法读取未定义的属性“setState”