2015-09-09 42 views
0

我在robots.remove上發現一個錯誤,指出機器人沒有定義,但我無法弄清楚爲什麼。請幫忙。謝謝。用mongodb和mongoose中的id移除一個對象

mongoose.connect('mongodb://localhost/robots'); //connecting to localdb 

router.delete('/:id', function(req,res){ 

    var id = req.params.id; 
    console.log(id); 

    robots.remove({_id:ObjectId(id)}, function(err, result){ //undefined?? 
     if (err) return res.status(500).send({err: 'Error: Could not delete robot'}); 
     if(!result) return res.status(400).send({err: 'Robot bot deleted from firebase database'}); 
     console.log('deleted!!!'); 
     res.send(result); 
    }); 
}); 
+0

那麼它是一個非常consice錯誤,因爲我並不需要'robots'是「申報」的任何地方。當然你有更多的代碼。你應該調用類似'robots = mongoose.model(「robots」)'的東西,並且在初始聲明該模型之後。 –

+0

我確實有一個模型,其中包含一個模式,但我可以在哪裏聲明它,以便它鏈接到我的數據庫,我不準確地知道我可以在路徑或服務器上聲明我的數據庫的位置。 –

+0

首先你需要「聲明」模型,你看起來已經有了某個地方。但是這裏的具體問題是,你已經在另一個模塊中聲明瞭這個,因此「必須」要求該模塊導入模型定義,或者再次調用'mongoose.model'「」,使用與你的本地範圍。報告的錯誤是因爲它們沒有在本地作用域中聲明的對象。 –

回答

3

您必須首先加載用戶模型。

var robots = require('../app/models/robots');//Load the model 

robots.js文件應該是這樣的:

var mongoose = require('mongoose'); 

var robotSchema = mongoose.Schema({ 
//Your schema here 
}); 

module.exports = mongoose.model('robots', robotSchema); 
相關問題