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

时间:2011-08-13 20:36:24

标签: 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";
        } else {
            return data.type;
        }
    }
);

运行时我得到了类型值。

但是如何将它存储在此函数之外的变量中?

1 个答案:

答案 0 :(得分:2)

完全忽略匿名函数的返回值。您可以将变量存储在可从当前范围访问的任何位置。 E.g。

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不会同步运行。也就是说,应该可以实现您正在寻找的任何结果。享受和快乐的编码!