代码用于查数据库,采用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); //成功!返回查询的用户信息 }); }); });};函数调用
1 回答

噜噜哒
TA贡献1784条经验 获得超7个赞
callback只是一个普通的函数,叫回调是因为它一般是在传入的函数运行结束时被调用
该函数返回值是什么?
看你传进来的callback
是什么
callback(null, user);这里为什么第一个参数是null?
如果有错,第一个是参数是错误,否则是null
,callback
函数通过检查第一个返回值来判断是否出错
一个无聊的例子
function fa(a, callback) { if (a == 1) { fb(3, callback); } else { callback("err: a != 1"); } }function fb(b, callback) { if (b === 3) { callback("err: b == 3"); } else { callback(null, "b != 3"); } } fa(1, function (err, res) { if (err) { console.error(err); } else { console.log("success"); console.log(res); } });
输出为
err: b == 3
添加回答
举报
0/150
提交
取消