我可以通过我的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'但不是实际结果。有人可以帮忙吗?
答案 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);