Angular JS と node.js/express フレームワークは初めてです。私は角度のあるフレームワークとエクスプレス フレームワークを使用する小さなアプリケーションに取り組んでいます。いくつかのエンドポイントで高速アプリを実行しています。1 つは POST アクション用、もう 1 つは GET アクション用です。node-mysql モジュールを使用して、mysql データベースに保存およびフェッチしています。
このアプリケーションは私のラップトップで実行されています。
angular.js クライアント:
コントローラ
function ItemController($scope, storageService) {
$scope.savedItems = storageService.savedItems();
alert($scope.savedItems);
}
サービス
myApp.service('storageService', function($resource) {
var Item = $resource('http://localhost\\:3000/item/:id',
{
id:'@id',
},
{
query: {
method: 'GET',
isArray: true
}
);
this.savedItems = function() {
Item.query(function(data){
//alert(data);
return data;
});
}
mysql データベースを備えた Express サーバー:
...
app.get('/item', item.list);
...
items.js
---------
exports.list = function(req, res) {
var sql = 'select * from item';
connect: function() {
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'admin',
database : 'test'
});
return connection;
},
query: function(sql) {
var connection = this.connect();
return connection.query(sql, function(err, results) {
if (err) throw err;
return results;
});
},
res.send(results);
};
サーバーから項目 (json) の静的配列を送信すると、 $scope.savedItems() が読み込まれます。
しかし、データベースのアイテムにアクセスすると、サーバーがアイテムを返しても、クライアントの $scope.savedItems は空です。$http を直接使用しても役に立ちませんでした。
angular.js ドキュメントから $resource と $http の非同期の性質を読みましたが、まだ何かが足りないか、何か間違っています。
よろしくお願いいたします。