私はエクスプレス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は次のようになります。ここでは
問題です:私はこれを行うための「ジョン」.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が
私は上記の質問に答えました – HitRefresh
@ pink612あなたのルートコードはきれいに見えますが、センサーのスキーマはどのように見えますか?スキーマに '_id:{type:String、required:true}'属性がありますか? –
また、 '_id'としてファーストネームを使用している理由はありますか?あなたの '_id'はユニークであることを前提としていて、あなたがファーストネームを使用すると重複している可能性が高いので、通常は勧めません。 –