0

我有功能

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)返回未定义时获取信息。

4

2 回答 2

1

在 checkTokenIsExpired 中,您需要将信息传递给响应回调,否则它不在您的第二个代码范围内。

至少在你成功的情况下:

response("success", info);

您通常不会传递“成功”,而是传递null以表明没有错误。

于 2013-02-16T02:03:04.793 回答
0

我已经解决了问题

checkTokenIsExpired(newData.body.name, newData.body.token, function(error, info)

因为它需要 1 个参数,但我把 2 改成checkTokenIsExpired(newData.body.name, newData.body.token, function(info) 它会更正:D

于 2013-02-16T03:16:12.807 回答