2017-03-17 88 views
1

我能夠通過我的nodejs api連接到mongodb,但由於某些原因數據未返回。當我查詢從控制檯MongoDB的,這裏是我得到:Mongodb數據不會返回到nodejs api

MongoDB Enterprise > db.patients.find(); 
{ "_id" : ObjectId("58c9a5dd1eb8c7c1c68778ca"), "FName" : "n", "LName" : "ri", "Email" : "[email protected]", "phone" : "1234567890" } 

這裏是從的NodeJS代碼:

app.get('/api/patients',function(req,res){ 
    Patient.getPatients(function(err,patients){ 
     if(err){ 
      throw err; 
     } 
     console.log(patients.length); 
     res.json(patients); 

    }); 
}); 

,這是getPatients方法:

var Patient = module.exports = mongoose.model('patient',patientSchema); 

// get patients 

module.exports.getPatients = function(callback,limit){ 

    Patient.find(callback); 
} 

但瀏覽器總是顯示「[]」並且沒有數據。當我在API中查看數組的長度(console.log(patients.length))時,我得到0.不知道爲什麼數據沒有返回。 有人可以指出我可能是什麼問題?

更新基於建議

,我沒有以下更改。我創建了2個集合以確保集合存在。所以我有病人和病人收藏。

MongoDB Enterprise > db.patient.find(); 
{ "_id" : ObjectId("58cfe4551eb8c7c1c68778cc"), "FName" : "V", "LName" : "K", "Email" : "[email protected]", "phone" : "1234567890" } 
{ "_id" : ObjectId("58cfe4601eb8c7c1c68778cd"), "FName" : "V1", "LName" : "K1", "Email" : "[email protected]", "phone" : "1234567890" } 
MongoDB Enterprise > db.patients.find(); 
{ "_id" : ObjectId("58cfe42d1eb8c7c1c68778cb"), "FName" : "V", "LName" : "K", "Email" : "[email protected]", "phone" : "1234567890" } 

下面是從文件的NodeJS代碼:

var mongoose = require('mongoose'); 

var patientSchema = mongoose.Schema({ 
    FName: { 
     type : String 
    }, 
    LName: { 
     type : String 
    }, 

    Email: { 
     type : String 
    }, 
    phone: { 
     type : String 
    }, 

}, 
{collection : 'patient'}); 


var Patient = module.exports = mongoose.model('patient',patientSchema); 

// get patients 

module.exports.getPatients = function(callback,limit){ 
console.log('test2'); 
Patient.find({}, function(err, patients) { 
    if (err) throw err; 

    // object of all the users 
    console.log(patients.length); 
}); 
} 

當我運行這段代碼,它打印「測試2」和「0」但對我來說沒有實際效果。有人可以幫忙嗎?

回答

0

你確定你定義了你的架構以及其出口非常好...如果是的話那麼做這樣的事情從你的腳本的NodeJS

//get the model 
var Patient = mongoose.model('patient',patientSchema); 
// get all the patients 
Patient.find({}, function(err, patients) { 
    if (err) throw err; 

    // object of all the users 
    console.log(patients); 
}); 

我認爲這應該工作

+0

架構在我的更新中定義和共享。請檢查.. – DevHelp

+0

你可以推你的代碼到github,我可以克隆它並解決問題..? –

+0

https://github.com/justdev123/Mean - >它可能是一個大項目,但相關的文件是1)src \ models \ patient.js 2)app.js – DevHelp

0

上面的答案,同時在Patient模型上正確執行查找,不會將結果返回給您的api響應。我想如果你改變你的getPatients代碼:

var Patient = module.exports = mongoose.model('patient',patientSchema); 

module.exports.getPatients = function(callback) { 
    Patient.find({}, 
     function(err, data) { 
      callback(err,data); 
     } 
    ); 
} 

它會工作。如果這不起作用,我希望看到整個代碼文件以確保app.get可以訪問getPatients函數 - 但如果不是這樣的話,您將會得到一個錯誤。所以,我認爲這會奏效。

0

我想我的代碼是正確的,但連接字符串不正確。

不正確的連接字符串:

mongoose.connect( '的mongodb://本地主機:27017 /');

正確連接字符串:

mongoose.connect( '的mongodb://本地主機:27017/患者');