代码用于查数据库,采用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('/'); //注册成功后返回主页
});
});
});
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
callback只是一个普通的函数,叫回调是因为它一般是在传入的函数运行结束时被调用
看你传进来的
callback是什么如果有错,第一个是参数是错误,否则是
null,callback函数通过检查第一个返回值来判断是否出错一个无聊的例子
输出为
您好,callback函数是回调函数,顾名思义,他是在异步操作完成之后才被调用的。一般情况是不需要返回值的,只需要处理异步操作结束后的逻辑,作为handler。
至于为什么是null,这是回调函数的一条基本准则,为了规范其使用,我们约定
callback的第一个参数为err(即异步操作内的异常错误等),第二个为处理的结果,当err===null时,即没有在异步操作中发生错误(异常)。不如换成Promise或者Async等风格的异步风格。
callback就是User.get(newUser.name, function(err, user) {...})中的function(err, user) {...}这一段。第一个参数是err(error,错误),第二个参数是user。所以,
callback(null, user)中的null就是说,err 是null,就是没有错误,也就是成功了;而
callback(err)则是有错误。