猫鼬我如何返回 findOne 数据对象

Posted

技术标签:

【中文标题】猫鼬我如何返回 findOne 数据对象【英文标题】:Mongoose how I can return findOne data object 【发布时间】:2014-07-29 18:56:30 【问题描述】:

代码如下:

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 用户中返回查找用户:

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

【问题讨论】:

为什么?为什么不返回数据或从回调中使用它?你的意图在这里并不清楚,你认为你想做的可能不是你真正想要的。您可以通过编辑您的问题来解释这一点来澄清这一点。 我只会将用户的地址返回给另一个函数 我之前说过的是你的意图不是很清楚。您的其他函数很可能应该从值范围内的回调中调用或以其他方式嵌套在其中。这就是重点,因为在该回调之外,该值还没有返回。 有人有想法吗?如何在变量中找到? 【参考方案1】:

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

exports.addressFromMongoos = function(username, callback)
    user.findOne(username: username, callback);
;

称它为:

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

【讨论】:

但我需要用户在回调之外! mongoos.addressFromMongoos(username[0], function(err, user) console.log(user); //这有效 );我这里需要用户对象 @user3721702 您需要将需要访问user 的任何代码放入回调(或从中调用)。这就是 node.js 异步的工作原理。 没有办法同步请求吗?还是调用变量中的数据?

以上是关于猫鼬我如何返回 findOne 数据对象的主要内容,如果未能解决你的问题,请参考以下文章

猫鼬 findOne 方法返回 null

猫鼬 findOne,更新和执行

节点猫鼬总是在 findOne 上返回错误

user.findOne() 总是返回 null

猫鼬 findOne :异步和同步之间的不同

无法访问从猫鼬fineOne()返回的json中的键[重复]