Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

《node与express开发》第9章关于构造函数的一段代码不解

$
0
0

这是一个表单提交的处理

//这里的构造函数不太懂
function NewsletterSignup(){
}
//这里也是 不知道他们使干什么用的 为什么要用
NewsletterSignup.prototype.save = function(cb){
    cb();
};

var VALID_EMAIL_REGEX = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/;
//邮箱验证`

app.post('/newsletter', function(req, res){
    var name = req.body.name || '', email = req.body.email || '';
    // 输入验证
    if(!email.match(VALID_EMAIL_REGEX)) {
        if(req.xhr) return res.json({ error: '有错误' });
        req.session.flash = {
  			一些返回错误的信息
        };
        return res.redirect(303, '/newsletter/archive');
    }
	//  new NewsletterSignup({ name: name, email: email }) 为什么要传这个对象进去?
	// .save(回调函数)这个回调函数就是上面构造函数里的cb吗?
    new NewsletterSignup({ name: name, email: email }).save(function(err){
        if(err) {
            if(req.xhr) return res.json({ error: 'Database error.' });
            req.session.flash = {
                返回数据库错了的信息
            }
            return res.redirect(303, '/newsletter/archive');
        }
        if(req.xhr) return res.json({ success: true });
        req.session.flash = {
           返回提交的是正确的信息
        };
        return res.redirect(303, '/newsletter/archive');
    });
});

Viewing all articles
Browse latest Browse all 14821

Trending Articles