Node.js 带有Nodejs+的回调函数;Mongoose,如何只返回搜索值?
我已经研究过如何做到这一点,但我仍然不明白,我错在哪里? 我研究了如何做这种类型的函数,但我不明白如何在回调中得到答案,结果总是在另一个函数中有两个函数 控制器UserCtrl 模型 上下文AuthCtrl 由于node.js提供的非阻塞异步体系结构,Node.js 带有Nodejs+的回调函数;Mongoose,如何只返回搜索值?,node.js,mongodb,mongoose,mongodb-query,Node.js,Mongodb,Mongoose,Mongodb Query,我已经研究过如何做到这一点,但我仍然不明白,我错在哪里? 我研究了如何做这种类型的函数,但我不明白如何在回调中得到答案,结果总是在另一个函数中有两个函数 控制器UserCtrl 模型 上下文AuthCtrl 由于node.js提供的非阻塞异步体系结构,resp未定义 当返回数据的函数isUserSearch尚未完成时,将执行您试图记录该值的行 您是否已经尝试在控制器中调用isUserSearch而不是isUser var login = function(req,res){ var da
resp
未定义
当返回数据的函数isUserSearch
尚未完成时,将执行您试图记录该值的行
您是否已经尝试在控制器中调用isUserSearch
而不是isUser
var login = function(req,res){
var data = req.body;
var email = data.email;
var password = Crypto.cryptoString(data.password);
User.isUser(email, function(existUser) {
if(existUser){
console.log('User exist', existUser);
// IsUser is a function to return the user array
// if it exists, otherwise it returns only a false
// boolean value. In the example I'm going to use this function
} else {
console.log('User does not exist');
}
});
}
然后,您可以删除isUser并更改:
var result = {
gerarToken : gerarToken,
isUser: isUserSearch,
}
您只需要带有回调的
isUserSearch
函数。使用AuthCtrl
中回调中返回的数据,将其称为:
控制器用户Ctrl:
// Models
var User = require('../models/user');
var isUserSearch = function(email, callback){
/* use findOne() which returns a single document that you can check if null */
User.findOne({email: email}, function(err, user){
if (err) throw err;
return callback(!!user); // return a callback with a Boolean value as argument
});
}
var result = {
gerarToken : gerarToken,
isUser: isUserSearch,
}
module.exports = result;
// Controllers
var Crypto = require('./cryptoCtrl');
var User = require('./UserCtrl');
// ----------- Login
var login = function(req, res){
var data = req.body;
var email = data.email;
var password = Crypto.cryptoString(data.password);
/* Call the isUser function with a callback */
User.isUser(email, function(userExists){
if (userExists) {
// userExists is a boolean value
}
});
}
上下文AuthCtrl:
// Models
var User = require('../models/user');
var isUserSearch = function(email, callback){
/* use findOne() which returns a single document that you can check if null */
User.findOne({email: email}, function(err, user){
if (err) throw err;
return callback(!!user); // return a callback with a Boolean value as argument
});
}
var result = {
gerarToken : gerarToken,
isUser: isUserSearch,
}
module.exports = result;
// Controllers
var Crypto = require('./cryptoCtrl');
var User = require('./UserCtrl');
// ----------- Login
var login = function(req, res){
var data = req.body;
var email = data.email;
var password = Crypto.cryptoString(data.password);
/* Call the isUser function with a callback */
User.isUser(email, function(userExists){
if (userExists) {
// userExists is a boolean value
}
});
}
我开始明白了,你知道我该怎么做。我需要专门为此学习什么,你能给我举个例子吗?谢谢
// Models
var User = require('../models/user');
var isUserSearch = function(email, callback){
/* use findOne() which returns a single document that you can check if null */
User.findOne({email: email}, function(err, user){
if (err) throw err;
return callback(!!user); // return a callback with a Boolean value as argument
});
}
var result = {
gerarToken : gerarToken,
isUser: isUserSearch,
}
module.exports = result;
// Controllers
var Crypto = require('./cryptoCtrl');
var User = require('./UserCtrl');
// ----------- Login
var login = function(req, res){
var data = req.body;
var email = data.email;
var password = Crypto.cryptoString(data.password);
/* Call the isUser function with a callback */
User.isUser(email, function(userExists){
if (userExists) {
// userExists is a boolean value
}
});
}