节点JS无法从.success返回数据

时间:2017-07-19 17:21:26

标签: javascript node.js return

我正在尝试从SQL数据库中检索数据并编写以下函数:

$scope.sqlRequest = function (Req) {
            console.log("Main.js requesting from DB :", Req)
            return server_operations.sqlRequest([Req])
            .success(function (Results) {
                console.log("Results returned to .success = ", Results);
                return Results.data
            });
        }

运行该功能时,结果会在控制台中正确显示。 但是,当我尝试在任何进一步的上下文中使用数据时:

Res = $scope.sqlRequest("<Some SQL String here>")

变量Res始终未定义。 我需要更改什么才能将数据转换为全局变量?

1 个答案:

答案 0 :(得分:-1)

您需要使用回调函数中返回的响应,因为它是异步的。 var myVar = myAsycnFunction();将始终未定义,因为在评估数据库调用时,不会返回任何响应。相反,尝试

.success(function( results ){
    processResults( results );
});

其中processResults()是一个带有逻辑的函数,用于处理你想对结果做什么。

编辑以澄清:如果您只想使用一个函数来处理结果,您可以在成功函数中调用它,传入结果数据。如果您想要更灵活,可以传入回调函数以在成功函数中调用并传入结果数据,如下例所示。

&#13;
&#13;
$scope.sqlRequest = function( req, callback ) {
  server_operations.sqlRequest( req )
    .success( function( res ) {
      // invoke the callback function we pass in to process results from the request
      callback( res.data );
    });
}

function processData( data ){
  // I do something with the data
}

// call your data fn and pass in a callback to process the results
$scope.sqlRequest( req, processData );
&#13;
&#13;
&#13;