我正在使用 node、express 和 mongoose 构建一个简单的测试应用程序。我的问题是了解我应该如何处理节点?下面的函数是通过来自客户端的标准 $.ajax 调用调用的,我不明白的一点是在第 111 行,我需要执行查找操作,但这是异步的,因此结果不可用,我们会接到一个电话当从 Mongo 准备好查找结果时返回第 112 行,但是在等待搜索结果时,我应该在这个函数的底部做什么,我应该使用下一个刻度函数吗?
我环顾四周,我确信答案已经存在,但我找不到它,而且我认为我对 node.js 的解释很差,所以请原谅我确定你知道我在问什么。
exports.loginAuthenticate = function(mongoose){
96 return function(req, res){
97 var error = { errorCode: 0, errorMessage:"No error" };
98
99 if(req.body.Username==null || typeof req.body.Username=="undefined" || req.body.Username.length==0){
100 error.errorCode=1;error.errorMessage="You MUST specify a username before attempting to login.";
101 }
102 if(req.body.Password==null || typeof req.body.Password=="undefined" || req.body.Password.length==0){
103 error.errorCode=1;error.errorMessage="You MUST specify a password before attempting to login.";
104 }
105
106 if(error.errorCode!=0){ res.send(error); return; }
107
108 mongoose.connect("mongodb://localhost/nm", function(err){
109
110 var client = mongoose.model("Client");
111 client.findOne({ Username: req.body.Username }, "Password", function(err, found){
112 if(err){
113 console.log("findOne -> Error!");
114 return;
115 }
116
117 if(found!=null){
118 if(req.body.Password!=found._doc.Password){
119 error.errorCode=1;
120 error.errorMessage="Sorry your username or password is invalid.";
121 }
122 }
123 else{
124 error.errorCode=1; // Did not find the user within the system
125 }
126 res.send(error);
127 return;
128 });
129
130 });
131
132 return;
133 };
134 };