Node.js Mongoose如何返回findOne数据对象

Node.js Mongoose如何返回findOne数据对象,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,代码如下: var mongoos = require('./getMongoos.js'); var user = mongoos.addressFromMongoos(username[0]); console.log(user); // i need the mongoos find here getMongoos.js: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var userShema =

代码如下:

var mongoos = require('./getMongoos.js');

var user = mongoos.addressFromMongoos(username[0]);

console.log(user); // i need the mongoos find here
getMongoos.js:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var userShema = new Schema({ 
    username: String
});
db = mongoose.createConnection('localhost/***');
var user = db.model('User', userShema);

exports.addressFromMongoos = function(username){

    user.find({username: username}, function(err, user) {
        if (err) {
          callback(err, null);
        } else {
            console.log(user); //works
        }
    });

};
但是我不知道如何在var user中返回find user:


var user=mongoos.addressFromMongoos(用户名[0])

不能直接从同步函数返回异步结果。您必须改用回调:

exports.addressFromMongoos = function(username, callback){
    user.findOne({username: username}, callback);
};
称之为:

mongoos.addressFromMongoos(username[0], function(err, user) {
    console.log(user);
});

为什么?为什么不返回数据或从回调中使用它?你的意图在这里并不清楚,你认为你想做的可能不是你真正想要的。你可以通过编辑你的问题来解释这一点。我只会将用户的地址返回给另一个函数。我之前说过,你的意图不是很清楚。您的另一个函数很可能应该从回调函数调用,或者嵌套在该值的作用域内。这就是问题所在,因为该回调的outisde值还没有返回。有人有idee吗?如何在变量中找到?但是我需要用户在回调之外!addressFromMongoos(用户名[0],函数(err,user){console.log(user);//this works});我需要用户对象here@user3721702您需要将需要访问
user
的任何代码放入回调(或从回调调用)中。node.js async就是这样工作的。没有办法发出同步请求吗?或者调用变量中的数据?