2016-07-20 14 views
0

私はエクスプレスjsプロジェクトに取り組んでいます。私の基本的なルーティングは完全に機能しています。通常、私はIDに基づいてレコードを検索したいときに私はこれを行う:ユーザー名に基づくExpress JSルーティング

router.route('/sensors_home/:sensor_id') 
.get(function (req, res) { 
     Sensor.findById(req.params.sensor_id,function(err, sensorInfo) { 
      if (err) 
       res.send(err); 
      res.send(sensorInfo); 
     }); 
    }); 

これは私がhttp://localhost:4000/sesnors_home/45000cbsfdhjbnabfbajhdb

(MongoDBのから45000cbsfdhjbnabfbajhdb =オブジェクトID)を行うとき、私は、データを取得することができます

今私の目標は、私のアプリケーションに複数のユーザーを持つことです。私は私のマングーススキーマを設定しているとMongoDBは次のようになります。ここでは

data

問題です:私はこれを行うための「ジョン」.Insteadである彼の_idをもとに、ジョン・ピーターソンに対応するデータを取得したいですhttp://localhost:4000/sesnors_home/45000cbsfdhjbnabfbajhdb私はこのようなことをhttp://localhost:4000/sesnors_home/Johnとし、Johnに固有のすべてのデータを取得したいと考えています。私はいろいろな方法を試しましたが、まだこの問題に固執しています。私はreq.params._idとユーザコレクションのいくつかのMongodbクエリを使ってみましたが、まだ運がありません。いくつかのアイデアを提案してください。

ありがとうございます!

UPDATE:

私は、次のコードを使用してみました:

router.route('/sensors_home/:id') 
.get(function (req, res) { 
res.send(_id.toString()); 
    User.findOne({_id: req.params._id} ,function(err, sensorInfo) { 
     if (err) 
      res.send(err); 
     res.send(sensorInfo); 
    }); 
}); 

これは私に次のエラーを与える: にReferenceError:_idが

答えて

0

が定義されていないが、あなたは次のことを試したことがありますか?

router.route('/sensors_home/:_id') 
.get(function (req, res) { 
     Sensor.findOne({_id: req.params._id},function(err, sensorInfo) { 
      if (err) 
       res.send(err); 
      res.send(sensorInfo); 
     }); 
    }); 
+0

私は上記の質問に答えました – HitRefresh

+0

@ pink612あなたのルートコードはきれいに見えますが、センサーのスキーマはどのように見えますか?スキーマに '_id:{type:String、required:true}'属性がありますか? –

+0

また、 '_id'としてファーストネームを使用している理由はありますか?あなたの '_id'はユニークであることを前提としていて、あなたがファーストネームを使用すると重複している可能性が高いので、通常は勧めません。 –

関連する問題