Javascript 将来自MongoDB的数据存储在变量-mongoose和node.js中

Javascript 将来自MongoDB的数据存储在变量-mongoose和node.js中,javascript,node.js,mongodb,mongoose,database,Javascript,Node.js,Mongodb,Mongoose,Database,我想知道是否有人可以告诉我如何从mongodb获取字符串值并将其存储在变量中 db.model("users").findOne({username: username, password: password}, {type:1}, function(err, data) { if(err) { return "Error"; } else if() { return "No records";

我想知道是否有人可以告诉我如何从mongodb获取字符串值并将其存储在变量中

db.model("users").findOne({username: username, password: password}, {type:1}, 
    function(err, data) {
        if(err) {
            return "Error";
        } else if() {
            return "No records";
        } else {
            return data.type;
        }
    }
);
当我运行这个时,我得到类型值


但是如何将其存储在函数外部的变量中?

匿名函数的返回值被完全忽略。您可以将变量存储在当前作用域中可访问的任何位置。例如

var Database = function {
  var myText = null;

  return {    

    getUser: function(username, password, callback) {
      db.model("users").findOne({username: username, password: password}, {type:1},
           function(err, data) {
             if (err) {
               myText = "Error";
             }
             else if (data.length == 0) {
               myText = "No records";
             }
             else {
               myText = data.type
             }

             $('.log').html(myText);
             callback(myText);
      });
    };
  };
}();
然后,您可以从server.js调用:

Database.getUser(username, password, function(theText) { alert(theText); });

您需要对不同元素的交互方式有足够的了解,因为带有回调的Javascript不会同步运行。这就是说,它应该有可能实现任何结果,你正在寻找。享受和快乐的编码

问题是我有一个Server.js文件,它调用de Database.js文件中的getUserType函数。问题是,我不知道如何从de database.js获取到server.js的值。您应该直接从server.js将回调函数传递到
findOne
。很难按照您建议的方式传递变量,因为MongoDB是不同步的。我建议不要将
findOne
封装在database.js中,因为MongoDB基于处理回调的最佳实践(即,您将回调传递到
findOne
调用它的确切位置)。也就是说,您可以通过在database.js中封装并传递回调来循环回调。这有意义吗?它有:D我将把findOne函数放在服务器中,然后像那样运行它。我只是想把de数据库和服务器分开,这样一切看起来都有点有序。是的,MongoDB并没有特别适用于这种封装概念。我编辑了我的回复,让你知道这是什么感觉。