2014-11-15 3 views
0

나는 sportsname으로 필터링해야하는 응용 프로그램을 개발 중입니다. 나는 백도어에서 Node.js와 MongoDB를 사용하여 입니다.MongoDB의 콜렉션에서 문서를 가져 오는 중에 오류가 발생했습니다.

여기 내 코드입니다 : - 여기

router.route('/user/:_id/explore/:sportsname') 

.get(function(req, res){ 


var query = Host.find(); 

    if(req.params.sportsname){ 
      query.where({sportsname:decodeURIComponent(req.params.sportsname)}); 
    } 

    query.exec(function(err, explore){ 
      if(err) 
        return next(err); 
      res.json(sportsname); 
      console.log(sportsname); 
    }) 

문서입니다. 나는 그것을 오류를주고 그 시간에 실행하고 때
[ 
    { 
     "_id":"5460e2af4ee5216f17000061", 
     "maxplayer":"1", 
     "minplayer":"11", 
     "date":"10 August 2014", 
     "venue":"google", 
     "time":"Afternoon", 
     "sportsname":"Lawn Tennis", 
     "__v":0 
    }, 
    { 
     "_id":"5460ff1b4ee5216f17000065", 
     "maxplayer":"0", 
     "minplayer":"9", 
     "date":"10 October 2014", 
     "venue":"google", 
     "time":"Early Morning", 
     "sportsname":"Cricket", 
     "__v":0 
    }, 
    { 
     "_id":"5461a4014ee5216f17000089", 
     "maxplayer":"4", 
     "minplayer":"29", 
     "date":"13 December 2014", 
     "venue":"google", 
     "time":"Afternoon", 
     "sportsname":"Lawn Tennis", 
     "__v":0 
    } 
] 

sportsname

하여 사용자를 검색 할. 오류가 아래와 같습니다 : - : req.params.sportsname가있는 경우 확인하는 것이

router.get('/user/:_id/explore/:sportsname', function(req, res, next) { 
    return Host.find({ sportsname: req.params.sportsname }, function(err, users) { 
    if (err) return next(err); 
    console.log(users); 
    return res.json(users); 
    }); 
}); 

주의를 필요가 없습니다

TypeError: path must be a string at Query.where 
(/node/node-api-master/node_modules/mongoose/lib/query.js:593:11) 
at Object.handle (/node/node-api-master/server.js:202:19) at next_layer 
(/node/node-api-master/node_modules/express/lib/router/route.js:103:13) 
at Route.dispatch (/node/node-api-master/node_modules/express/lib/router/route.js:107:5) 
at /node/node-api-master/node_modules/express/lib/router/index.js:195:24 
at param (/node/node-api-master/node_modules/express/lib/router/index.js:268:14) 
at param (/node/node-api-master/node_modules/express/lib/router/index.js:280:16) 
at param (/node/node-api-master/node_modules/express/lib/router/index.js:280:16) 
at Function.proto.process_params 
(/node/node-api-master/node_modules/express/lib/router/index.js:296:3) 
at next (/node/node-api-master/node_modules/express/lib/router/index.js:189:19) 
+0

질문을 편집하여'Host' 스키마 정의를 표시 할 수 있습니까? – JohnnyHK

+0

이것은 코드를 검토하고 경고 – CesarTrigo

답변

0

이것은 구문 문제, 여기 당신이 뭘하려는 건지의 권리 구현은 , 그렇지 않으면 경로에 도달하지 않을 것입니다. 이 매개 변수를 선택 사항으로 지정하려면 다음을 사용하십시오. /user/:_id/explore/:sportsname? (매개 변수 뒤에 물음표를 추가하십시오.)

+0

을 확인하십시오. 감사합니다. 여전히 전체 문서를 보여줍니다. –

관련 문제