Node.js Nodejs中的回调函数
我有功能Node.js Nodejs中的回调函数,node.js,callback,Node.js,Callback,我有功能 var checkTokenIsExpired = function(name, token, response) { LoginToken.find( { name: name, series: token }, function(error, info){ console.log("info: ", info[0]['expire']); if (error) { // resp
var checkTokenIsExpired = function(name, token, response) {
LoginToken.find( { name: name, series: token }, function(error, info){
console.log("info: ", info[0]['expire']);
if (error) {
// response.send("error: %s}", error);
response(error);
}
if (info.length > 0) {
var expire = new String(info[0]['expire']);
// expire = expire.substr(0,26);
var date = new Date(expire);
if (date >= new Date()) {
// response.send("{info: success" );
response("success");
}
else{
// response.send("error: token-has-expired");
response("token-has-expired");
}
console.log("Response: ", info);
}
else {
response(null);
}
} );
}
检查令牌是否过期?它将返回一个字符串
我在这里调用这个函数
exports.updateAccount = function(newData, callback)
{
Accounts.find({name:newData.body.name}, function(err, docs){
if (err) {
callback.send('{error: ' + String(err) + "}");
}
if (docs.length==0 || !docs) {
callback.send("{error: NULL }");
}
else {
checkTokenIsExpired(newData.body.name, newData.body.token, function(error, info){
if (error){
callback.send("{error: " + error + "}");
// I want to get info here }
console.log("check token: ", info);
// check info of token is expired or not
if (info!=null && info!="token-has-expired") {
var updateString = "";
if (newData.body.screen_name){
Accounts.update( {'name': newData.body.name},
{
"screen_name" : newData.body.screen_name
},
{ 'upsert' : true },
function (err, numberAffected, raw) {
if (err) return handleError(err);
});
}
if (newData.body.email){
Accounts.update( {'name': newData.body.name},
{
"email": newData.body.email
},
{ 'upsert' : true },
function (err, numberAffected, raw) {
if (err) return handleError(err);
});
}
if (newData.body.password == ''){
} else{
var password = encodePassword(newData.body.password, docs[0]['salt']);
Accounts.update( {'name': newData.body.name},
{
"hassedPass" : password,
},
{ 'upsert' : true },
function (err, numberAffected, raw) {
if (err) return handleError(err);
});
}
}
});
}
我想在调用checkTokenIsExpired时获取信息,但是当我
console.log(“info”,info)
返回未定义的信息时。在checkTokenIsExpired中,您需要将信息传递给响应回调,否则它不在第二个代码的范围内
至少在你成功的情况下:
response("success", info);
不传递“success”,通常传递null
表示没有错误。我已经解决了这个问题
checkTokenIsExpired(newData.body.name, newData.body.token, function(error, info)
因为它需要1个参数,但我需要2个参数
将其更改为checkTokenIsExpired(newData.body.name、newData.body.token、函数(info)
它将更正:D但是如何获取我需要的信息我已经设置好了,但是我无法获得我想要的结果。checkTokenIsExpired的回调需要2个参数,因此当调用它时,需要在调用响应函数时传递一个值作为第二个参数(checkTokenIsExpired中该回调的名称)。这就是为什么它没有定义。