ogregor
@ogregor
арендатор vpn сервера debian

Как использовать функции переданные в метод?

Здравствуйте изучаю материал по книжке, но не могу понять принцип работы данного кода.

здесь создается функция и ее метод

function NewsletterSignup(){
    
}
NewsletterSignup.prototype.save = function(cb){
	 cb();
};


app.post('/newsletter', function(req, res){
	var name = req.body.name || '', email = req.body.email || '';
	// input validation
	if(!email.match(VALID_EMAIL_REGEX)) {
		if(req.xhr) return res.json({ error: 'Invalid name email address.' });
		req.session.flash = {
			type: 'danger',
			intro: 'Validation error!',
			message: 'The email address you entered was  not valid.',
		};
		return res.redirect(303, '/newsletter/archive');
	}
	new NewsletterSignup({ name: name, email: email }).save(function(err){
		if(err) {
			if(req.xhr) return res.json({ error: 'Database error.' });
			req.session.flash = {
				type: 'danger',
				intro: 'Database error!',
				message: 'There was a database error; please try again later.',
			};
			return res.redirect(303, '/newsletter/archive');
		}
		if(req.xhr) return res.json({ success: true });
		req.session.flash = {
			type: 'success',
			intro: 'Thank you!',
			message: 'You have now been signed up for the newsletter.',
		};
		return res.redirect(303, '/newsletter/archive');
	});
});


Не могу понять эту часть кода, когда происходит появление объекта err, и как это реализовать в этом примере?

new NewsletterSignup({ name: name, email: email }).save(function(err){
		if(err) { // в каком случае сюда попадет?
			if(req.xhr) return res.json({ error: 'Database error.' });
			req.session.flash = {
				type: 'danger',
				intro: 'Database error!',
				message: 'There was a database error; please try again later.',
			};
			return res.redirect(303, '/newsletter/archive');
		}
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
FFxSquall
@FFxSquall
Могу писать код, могу не писать
Судя по всему на данном этапе код:
NewsletterSignup.prototype.save = function(cb){
   cb();
};

пока просто не дописан, в будущем там будет реальное обращение к серверу и если вернется ошибка, то cb() будет вызван с аргументом cb(err) и тогда ваша коллбек функция получит переменную с ошибкой.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы