express req.params出现混乱的问题
发布于 6 年前 作者 souldjl 2182 次浏览 来自 问答

9979F12078EC9350CD977AF3990BCD39.png 如图,很奇怪,不知道为什么会出现这个问题 ?

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 对应 你上面那个肯定是走到其他接口里面了 你看看在对应的接口里面打印一下 我觉得走错接口了

@hewentaowx

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 不至于吧,动态路由不都是这个样子吗

@souldjl 起码要加上特殊的前缀或者关键字啊,哪有像你这样定义的啊,很容易路由冲突

来自酷炫的 CNodeMD

回到顶部