Javascript Node.js连接使用mongoclient的mongodb
在NodeJS中,我只想编写一些外部方法,从mongodb检索数据并返回它。在这方面,我使用了Javascript Node.js连接使用mongoclient的mongodb,javascript,node.js,mongodb,callback,Javascript,Node.js,Mongodb,Callback,在NodeJS中,我只想编写一些外部方法,从mongodb检索数据并返回它。在这方面,我使用了MongoClient.js模块与mongodb进行交互。但问题是,当调用外部方法时,它会在数据库连接方法完成执行之前返回值。在这里,我只想保留return语句,直到mongodb.connect方法完成。怎么办? 下面是我的代码 service.js var employee = require('./model/employeeService.js'); var json = employee.ge
MongoClient.js
模块与mongodb
进行交互。但问题是,当调用外部方法时,它会在数据库连接方法完成执行之前返回值。在这里,我只想保留return语句,直到mongodb.connect
方法完成。怎么办?
下面是我的代码
service.js
var employee = require('./model/employeeService.js');
var json = employee.getUser(employeeId);
exports.getUser = function(employeeId) {
var json = [];
MongoClient.connect(db.getdbUrl(),function(err,db){
if(err) {
json = err;
}else {
document = (employeeId)?{_id:employeeId}:{};
db.collection('Employee').find(document).limit(50).toArray(function(err,users){
if(err) {
json = err;
}
else {
console.log("Inside MongoClient"); // this will executes second
json = users;
}
});
}
});
console.log("OutSide",json); // this executes first
return json;
}
其中employeeService充当与数据库交互的模型,并将数据返回到service.js中,我们的web服务在其中编写并响应用户
employeeService.js
var employee = require('./model/employeeService.js');
var json = employee.getUser(employeeId);
exports.getUser = function(employeeId) {
var json = [];
MongoClient.connect(db.getdbUrl(),function(err,db){
if(err) {
json = err;
}else {
document = (employeeId)?{_id:employeeId}:{};
db.collection('Employee').find(document).limit(50).toArray(function(err,users){
if(err) {
json = err;
}
else {
console.log("Inside MongoClient"); // this will executes second
json = users;
}
});
}
});
console.log("OutSide",json); // this executes first
return json;
}
在这里,我可以从输出控制台找到connect MongoClient.connect方法的异步执行流,并通过从service.js调用它来获取空数组
输出控制台
OutSide []
Inside MongoClient
这是
而不是
异常流,这是异步
代码的执行方式。如果要返回用户,请在else{}
中返回,替换json=users代码>按返回用户
并删除代码末尾的return
去学习更多关于异步调用与同步调用的内容,以及它们是如何执行的。并在JavaScript中考虑学习<代码>回调< /代码> .<