Сервер на NodeJS принимает post запрос:
router.post('/register', urlencodedParser, function(req, res) {
var regUser, resp;
regUser = new User();
resp = regUser.register(req.body);
console.log(resp);
return res.send(req.body);
});
Так же у меня есть функция-конструктор User, которая имеет метод register
(Когда приходит пост запрос регистрируем пользователя), вот код:
User = (function() {
function User() {}
User.prototype.register = function(obj) {
var codeFunc, newUser;
codeFunc = 0;
newUser = new userSchema({
login: obj.login,
password: obj.pass,
email: obj.mail
});
userSchema.find({
login: obj.login
}, function(err, docs) {
if (err) {
throw err;
}
if (typeof docs[0] === 'object') {
return console.log('Login already is used', codeFunc = 401);
} else {
return newUser.save((function(_this) {
return function(err) {
if (err) {
throw err;
} else {
codeFunc = 201;
}
return console.log(codeFunc = 201);
};
})(this));
}
});
return codeFunc;
};
return User;
})();
Метод register выполняем поиск по базе данных пользователя с таким же именем что и было передано в функцию и если есть совпадение, то присваиваю переменной codeFunc = 401 (значит логин занят) и тд.
Проблема: функция register должна вернуть код (401 или 201), но сначала отрабатывает
console.log(resp); (который в начале я написал), а после него уже
console.log(codeFunc = 201); (который отрабатывает если успешно зарегистрирован пользователь).
И получается что на выходе функции register я имею 0 (codeFunc = 0, я сам его объявляю),а не код операции.