2015-05-11 136 views
0

如何使用mongoose和node.js查詢MongoDB?我已經將它放到了可以將我的JSON對象插入到我的數據庫的位置,但是我試圖從DB返回JSON對象的所有方法都返回null或只是關於數據庫的信息。如何使用貓鼬查詢mongoDB?

有沒有用貓鼬是能夠查詢中的方法類似數據庫的一些好的方法:

var cursor = db.collection.find() 
var JSONobject = cursor.next() 

下面是在我的代碼現在:

mongoose.connect('mongodb://localhost/myDB'); 
mongoose.connection.on('error', console.error.bind(console, 'connection error:')); 
var cursor = mongoose.connection.db.contents.find(); 
console.log(cursor.next()); 

這將引發錯誤在線:

var cursor = mongoose.... 

聲稱'無法調用方法'查找'未定義'。

請注意,我的收藏「內容」確實存在,它包含一個JSON文檔。我知道這是因爲我使用mongo shell手動導航到集合。

編輯:我打開查詢數據庫的替代方法。我只是希望能夠一次從我的DB中返回一個JSON對象,同時跟蹤客戶端在數據庫中的位置。

+0

你有一個特定的貓鼬模型,你想查詢?如果沒有,使用貓鼬ODM沒有多少意義。使用本地mongoDB驅動程序,您要求的內容會更直接。 –

+0

太棒了!你應該考慮刪除這個問題,因爲它對將來的SO讀者沒有多大用處。 –

回答

0

一種方法使用貓鼬是如下來查詢的MongoDB:

Content.findOne().exec(function(err,docs){console.log(docs)}); 

文檔包含JSON對象。像其他任何對象一樣訪問它的屬性。

請注意,此方法使用異步回調。因此,您無法將JSON對象文檔存儲到變量中,以便在該函數之外使用JSON文檔信息。因此,您需要執行該功能內部的JSON文檔對象信息所需的任何操作。

例如,我需要查詢信息來爲我的get api提供文件路徑。因此,結果如下:

//get 
app.get('/api/media/', function(req,res){ 
    Content.findOne().exec(function(err,docs){res.sendFile(path.join(__dirname, '/api/media/', docs.filename))}); 

}); 

注意,內容是我的模式的模型,其中一個參數是文件名。