节点/快速路由问题-调用不正确的路径
Node/Express Routing issue - invoking incorrect path
一切似乎都工作得很好,但是当试图达到'/posts/new'时,我得到"TypeError:无法读取null的属性'title' "引用'/routes/posts.js:24'这是在'/:title' get方法。知道为什么吗?
"路线/posts.js"
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Post = mongoose.model('posts');
/* posts displays*/
// posts index
router.get('/', (req, res) => {
Post.find((err, posts) => {
res.render(
'posts/index',
{
title: 'Get All the Posts!',
posts: posts
}
);
});
});
// single post
router.get('/:title', (req, res) => {
var query = {"title": req.params.title};
Post.findOne(query, (err, post) => {
res.render(
'posts/post',
{
title: post.title,
date: post.date,
body: post.body
}
);
});
});
/* posts new */
router
// GET new posts route and form
.get('/new', (req, res) => {
res.render('posts/new', { title: 'Add a new Post' });
})
// POST new post data
.post('/new', (req, res) => {
new Post({
title: req.body.title,
date: req.body.date,
body: req.body.body
})
// Save post to db
.save((err, post) => {
res.redirect('/posts');
});
});
/* posts edit */
router
// GET the post
.get('/edit/:title', (req, res) => {
var query = {'title': req.params.title};
Post.findOne(query, (err, post) => {
res.render(
'posts/edit',
{
title: post.title,
date: post.date,
body: post.body
}
);
});
})
// PUT to update the post
.put('/edit/:title', (req, res) => {
var query = {'title': req.params.title};
var update = {
title: req.body.title,
body: req.body.body
};
var options = {new: true};
Post.findOneAndUpdate(query, update, options, (err, post) => {
res.render(
'posts/post',
{
title: post.title,
date: post.date,
body: post.body
}
);
});
})
// DELETE to delete a post
.delete('/edit/:title', (req, res) => {
var query = {'title': req.params.title};
Post.findOneAndRemove(query, (err, posts) => {
res.redirect('/');
})
});
module.exports = router;
'views/posts/new' with Swig:
{% extends '../layout.html' %}
{% block title %}{% endblock %}
{% block content %}
<h1>{{ title }}</h1>
<form method='post' action='/posts/new' class='form-posts'>
<label>Title:</label>
<input type="text" name='title' class='form-posts-text' required>
<label>Body</label>
<input type="text" name='body' class='form-posts-body' required>
<button type='submit' class='btn-submit'>Submit</button>
</form>
{% endblock %}
尝试将/new
的路由放在通用/:title
根目录之前。
因为/:title
是首先定义的,所以如果它匹配(它确实匹配),它将首先被调用。因为没有名为"new"的帖子,所以数据库搜索结果为空。这里应该有一个错误处理程序。错误似乎在title: post.title
行。
如果首先定义了/new
,如果匹配,将调用它。如果没有,则更通用的/:title
将是。
相关文章:
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- Amazon S3 REST API大小不正确
- Javascript Reg Exp不正确匹配
- DIV并排,位置不正确
- 仅在IE中,javascript中的时区名称不正确
- 注意:wp_enqueue_script调用不正确.在 Wordpress 调试模式下
- 你能解释一下为什么这个javascript不正确吗
- 画布绘制调用呈现顺序不正确
- XMLhttpRequest 的问题,不确定调用是否正确
- Chrome 有时会调用不正确的构造函数
- AngularJS异步调用多个数据库,并且保存顺序不正确
- 模型销毁调用了不正确的REST url
- Jquery(Window).Resize()调用函数不正确
- 如果从存储的变量中调用jquery函数,则绑定不正确
- 节点/快速路由问题-调用不正确的路径
- 不能通过ajax调用获得正确的索引结果
- Jquery if条件,如果字符串格式不正确,将调用Alert
- 404上的rails js调用,可能不正确的路由定义
- 在JS中调用回调时不正确的变量
- javascript调用的内容类型不正确