Javascript Node.js连接使用mongoclient的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

在NodeJS中,我只想编写一些外部方法,从mongodb检索数据并返回它。在这方面,我使用了
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中考虑学习<代码>回调< /代码> .<