在我的AngularJS控制器中,我有以下代码:
$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;
});
}
类似的代码在不使用Angular时工作正常。现在,由于
,它不再起作用了connection.query($scope.revenueSQL)
一部分。更确切地说,$ scope.revenueSQL不被识别为它实际上的SQL语句。直接放入SQL而不从文件中读取它可以正常工作。不过,看着我的控制台,我发现$ scope.revenueSQL正是我想要的。但是作为参数放入.query(),似乎出现了问题。有什么想法吗?
答案 0 :(得分:0)
尝试
$scope.revenueSQL = $scope.$eval(String(revSQL));
在当前作用域上执行表达式并返回结果。