代码用于查数据库,采用express框架。不是很理解get方法里面的callback,该函数返回值是什么?callback(null, user);
这里为什么第一个参数是null?感觉JS回调自己理解的不是很清楚
//读取用户信息
function User(user) {
this.name = user.name;
this.password = user.password;
this.email = user.email;
};
User.get = function(name, callback) {
//打开数据库
mongodb.open(function(err, db) {
if (err) {
return callback(err); //错误,返回 err 信息
}
//读取 users 集合
db.collection('users', function(err, collection) {
if (err) {
mongodb.close();
return callback(err); //错误,返回 err 信息
}
//查找用户名(name键)值为 name 一个文档
collection.findOne({
name: name
}, function(err, user) {
mongodb.close();
if (err) {
return callback(err); //失败!返回 err 信息
}
callback(null, user); //成功!返回查询的用户信息
});
});
});
};
函数调用
User.get(newUser.name, function(err, user) {
if (err) {
req.flash('error', err);
return res.redirect('/');
}
if (user) {
req.flash('error', '用户已存在!');
return res.redirect('/reg'); //返回注册页
}
//如果不存在则新增用户
newUser.save(function(err, user) {
if (err) {
req.flash('error', err);
return res.redirect('/reg'); //注册失败返回主册页
}
req.session.user = newUser; //用户信息存入 session
req.flash('success', '注册成功!');
res.redirect('/'); //注册成功后返回主页
});
});
});
callback只是一个普通的函数,叫回调是因为它一般是在传入的函数运行结束时被调用
看你传进来的
callback
是什么如果有错,第一个是参数是错误,否则是
null
,callback
函数通过检查第一个返回值来判断是否出错一个无聊的例子
输出为