angularJS / handing over parameter

74 views Asked by At

In my AngularJS controller, I have the following code:

    $scope.readMDB = function () {

    var fs = require('fs');
    var adodb = require('node-adodb');
    var password = document.forms["mdbSelForm"]["pwd"].value;

    var revSQL = fs.readFileSync('revenue.sql', 'utf-8');
    revSQL = revSQL.replace(/(\r\n|\n|\r)/gm, " ");
    revSQL = revSQL.replace(/[รค]/g, function () { return unescape("%E4") });
    $scope.revenueSQL = String(revSQL);
    console.log("revSQL: " + $scope.revenueSQL);


    connection = adodb.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + $scope.selectedMDB + ';Jet OLEDB:Database Password=' + password + ';');

        // debug 
        adodb.debug = true;

        connection
          .query($scope.revenueSQL)
          .on('done', function (data) {
              var revAll = JSON.stringify(data);
              var revenueData = JSON.parse(revAll).records;
              fs.writeFile('./model/revenue.json', JSON.stringify(data), function (err) {
                  if (err) throw err;
                  console.log("revenue.json saved");
              });
              return true;
          })
          .on('fail', function (data) {
              return false;
          });
    }

A similar code worked fine while not using Angular. Now, it doesn't work no more, because of the

connection.query($scope.revenueSQL)

part. More precisely, the $scope.revenueSQL is not recognized as the SQL Statement that it actually is. Putting the SQL directly, without reading it from a file, works fine. Still, looking at my console, I see that $scope.revenueSQL is exactly what I want. But being put as parameter into .query(), something seems to go wrong. Any ideas?

1

There are 1 answers

2
Sean.W On BEST ANSWER

Try

$scope.revenueSQL = $scope.$eval(String(revSQL));

to execute the expression on the current scope and returns the result.