首先,或许我需要澄清一下,我是这种技术的新手。我从PHP迁移到JavaScript,我以前从未做过这种工作。我正在使用Electron + AngularJS制作桌面应用程序。我有一个简单的表,我需要显示获取的MySQL表数据。查看信息我找到了一个使用NodeJS的简单方法,但是我将检索到的数据存储到$ scope后面有问题,用ng-repeat指令显示。我的代码(简称):
app.controller('registrosController', function($scope, $http) {
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: null,
database: 'dniscan'
})
connection.connect((err) => {
if(err){
return console.log(err.stack);
}
})
$queryString = 'SELECT * FROM registros ORDER BY escaneado DESC';
connection.query($queryString, (err, data) => {
if(err) {
return console.log("Ocurrió un error durante la consulta", err)
}
console.log(data) //The data shows correctly in the console.
$scope.registros = data //This not working. It returns undefined.
});
connection.end();
});
答案 0 :(得分:1)
似乎你正在混淆客户端和服务器,所以为了澄清,在服务器中你从db获取数据。在客户端中,您将数据放在范围上。然后在HTML中,您将范围中的数据放在视图中。
以下是一个例子:
服务器 - NodeJs
app.get('getData', function (req, res) {
var mysql = require('mysql');
var connection = mysql.createConnection({ ... });
connection.connect((err, connection) => {
if(err) {
res.send({ err })
} else {
var queryString = 'SELECT * FROM ...';
connection.query(queryString, (err, data) => {
if(err) {
res.send({ err })
} else {
res.send({ data });
}
});
}
});
connection.end();
});
客户 - AngularJs
app.controller('registrosController', function($scope, $http) {
$http.get('/getData').then(function(data) {
$scope.registros = data;
});
});
客户端 - Html
<div ng-repeat="registro in registros">
...
</div>
P.S。在javascript中,您没有通过使用$
附加变量来定义变量,而是使用单词var
。
答案 1 :(得分:0)
您不能在浏览器中使用mysql。您正在运行的代码适用于Node(它是服务器端平台),它将访问您的(服务器)的mysql并在那里存储数据。
如果您想在浏览器中存储一些持久性数据,最好的方法是使用HTML5的本地存储或会话存储,并且在用户删除它们之前可以访问它们。
但是如果你真的想使用数据库,我不推荐。有一些轻型数据库可供使用。
从我的搜索中我可以找到角度的sqlite包: - https://github.com/reduardo7/angular-sqlite
你也可以使用indexddb这是基于文档的数据库: - https://github.com/webcss/angular-indexedDB
答案 2 :(得分:-2)
您应该使用angular.copy将数据移动到$ scope.registros
$scope.registros = angular.copy(data)