Mongodb数据不会返回到nodejs api

时间:2017-03-17 19:27:55

标签: angularjs node.js mongodb

我可以通过我的nodejs api连接到mongodb,但由于某种原因,不会返回数据。当我从控制台查询mongodb时,我得到的是:

MongoDB Enterprise > db.patients.find();
{ "_id" : ObjectId("58c9a5dd1eb8c7c1c68778ca"), "FName" : "n", "LName" : "ri", "Email" : "abc@yahoo.com", "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" : "abc@yahoo.com", "phone" : "1234567890" }
{ "_id" : ObjectId("58cfe4601eb8c7c1c68778cd"), "FName" : "V1", "LName" : "K1", "Email" : "abc@yahoo.com", "phone" : "1234567890" }
MongoDB Enterprise > db.patients.find();
{ "_id" : ObjectId("58cfe42d1eb8c7c1c68778cb"), "FName" : "V", "LName" : "K", "Email" : "abc@yahoo.com", "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);
});
}

当我运行此代码时,它为我打印'test2'和'0'但不是实际结果。有人可以帮忙吗?

3 个答案:

答案 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);
});

我相信这应该有用

答案 1 :(得分:0)

上面的答案,在正确执行患者模型上的查找时,不会将结果返回到您的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函数 - 但如果情况不是这样你就会收到错误。所以,我认为这会奏效。

答案 2 :(得分:0)

我认为我的代码是正确的,但连接字符串不正确。

连接字符串不正确:

mongoose.connect(' mongodb的://本地主机:27017 /&#39);

更正连接字符串:

mongoose.connect(' mongodb的://本地主机:27017 /的患者&#39);