express req.params出现混乱的问题
如图,很奇怪,不知道为什么会出现这个问题 ?
console.log('find one post query',query)
mongodb.findOne(query,'posts',function (err,doc) {
if(err){
return callback(err)
}
console.log('find one post',doc)
//解析 markdown 为 html
// doc = doc[0];
doc.post = markdown.toHTML(doc.post);
callback(null, doc);//返回查询的一篇文章
})
```
#### 报错信息
```javascript
find one post null
/Users/apix/Desktop/express-blog/node_modules/mongodb/lib/utils.js:123
process.nextTick(function() { throw err; });
^
TypeError: Cannot read property 'post' of null
9 回复
我猜你应该有多个get请求 都是类似 /u/:xxx这样的 当你调get请求的时候 你怎么保证你的get请求没走错路由呢 你传的参应该和你的 :name :day 对应 你上面那个肯定是走到其他接口里面了 你看看在对应的接口里面打印一下 我觉得走错接口了
req.params-222222 daijl 2018-8-6 dsads
{ name: 'daijl', day: '2018-8-6', title: 'dsads' } 'req.params22222222'
{} 'req.query22222222'
find one post query { name: 'daijl', 'time.day': '2018-8-6', title: 'dsads' }
连接成功!
find one post { _id: 5b68285740729115dfe063c8,
name: 'daijl',
time:
{ date: 2018-08-06T10:52:07.374Z,
year: 2018,
month: '2018-8',
day: '2018-8-6',
minute: '2018-8-6 18:52' },
title: 'dsads',
post: '大萨达撒' }
in render one post { _id: 5b68285740729115dfe063c8,
name: 'daijl',
time:
{ date: 2018-08-06T10:52:07.374Z,
year: 2018,
month: '2018-8',
day: '2018-8-6',
minute: '2018-8-6 18:52' },
title: 'dsads',
post: '<p>大萨达撒</p>' }
GET /u/daijl/2018-8-6/dsads 304 106.436 ms - -
req.params-222222 daijl images qrcode.png
{ name: 'daijl', day: 'images', title: 'qrcode.png' } 'req.params22222222'
{} 'req.query22222222'
find one post query { name: 'daijl', 'time.day': 'images', title: 'qrcode.png' }
连接成功!
find one post null
/Users/apix/Desktop/express-blog/node_modules/mongodb/lib/utils.js:123
process.nextTick(function() { throw err; });
^
``` 我这个只是查询一条数据啊 ,怎么会出现2个呢
@hewentaowx 我大概猜到什么问题了 ,就是这个请求时没有问题的 ,但是这个页面 会再发一次请求,然后他还把parasm的参数给改变了 ,不知道为什么,所以出现这个错误了
@hewentaowx 有解决办法吗 是因为 图片又造成了 一次访问 ,而且这个静态资源访问 ,倒是params 参数也错了。
从来没有见过这样设置动态路由的。。。
来自酷炫的 CNodeMD
@hewentaowx 我的图片访问成了这个 样子 。。刚哈匹配上路由 ,我擦 http://localhost:3000/u/daijl/images/qrcode.png
@souldjl 最简单的办法你弄个前缀不一样的不就行了 都是get方法 你一个/u/daijl 其他的用/u/daijl2 或者其他不就行了
@zhangmingfeng 不至于吧,动态路由不都是这个样子吗