2012-03-31 9 views
1

を見つける使用して:マーカーとのPOINode.jsのマングースと私はMongoDBの中に保存された2つのコレクション持っrequest.params

MarkerIDは要所での外部キーとマーカーの主キーです。

私はMongoDBのコンソールでこれを行うことができ、特定のマーカーID

でPOIを返すようにしたい:

>db.PoiPois.find({"MarkerID":78}) 

私もExpressを使用してNode.jsのアプリにハードコードされたクエリでこれを行うことができますRESTfulなルートやマングース:

app.get('/pois/:markerid', function(req, res) { 
poiModel.find({MarkerID:78}, function (err,pois) { 
     res.contentType('json'); 
    res.json({ 
     success: true, 
     data: pois 

    }); 
}); 
}); 

私はmarkeridのためにリクエストパラメータを使用して、動的なものにハードコードされたクエリを交換したいので、次の操作を行います。

poiModel.find({MarkerID:req.params.markerid}, function (err,pois) { 

しかし、これは機能しません(空のjsonを返します)。

どこが間違っていますか?助けをありがとう

答えて

2

私はreq.params.markeridが文字列だと思います。整数に変換してみてください。

+1

それを行う最も簡単な方法は '{MarkerID:+ req.params.markerid}' – danmactough

+0

@danmactoughです:うわー、素敵なトリック!それは信頼できますか?任意の問題( 'parseInt'と比較して)? :) –

+0

セルジオ、私はそれが私がそれを与えると予想されるどのような種類の文字列を知っているそれを使用して快適になると思います。ある意味では、 'parseInt'よりも"信頼できる "ものです。なぜなら、先行するゼロを持つ文字列は、基数10を使ってキャストされます。また、' parseFloat'のような小数点を含む文字列をキャストします。確かに、dbクエリでは、クエリパラメータを取得する前にいくつかの検証を実行していました。 – danmactough

関連する問題