2016-07-20 81 views
0

我正在開發一個快速js項目。我已經完成了所有基本路由的設置工作。通常,當我想根據ID檢索記錄我這樣做:基於用戶名快速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

(45000cbsfdhjbnabfbajhdb =對象ID從MongoDB的)

現在我的目標是讓我的應用程序擁有多個用戶。我有我的貓鼬的架構設置和MongoDB的是這樣的:

data

這裏的問題:我想檢索與約翰彼得森數據基於他的_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您的路線代碼看起來不錯,您的傳感器模式是什麼樣的?你的schema中有'_id:{type:String,required:true}'屬性嗎? –

+0

另外,是否有一個原因,你正在使用的名字作爲_id'?我通常不建議這樣做,因爲你的'_id'是唯一的,如果你使用第一個名字的話你可能會有重複。 –