Ionic Frameworkで作ったアンドロイドアプリとSQLデータベースを接続するために、ここ数日間試してきました。いくつかの研究の後、フロントエンドとバックエンドの間で、私はRESTful API
が必要であることを理解しました。だから私はIonicで自分のアプリを構築していたので、私はNodeJSでサーバーを作り始めました。私はMySQLとNodeJSとの間の接続を行いました。ちょうど私が下に入力する非常に単純なhello worldスクリプトです。Ionic FrontendとNodeJSサーバ間の接続
//Setup
var db = require('./db');
var express = require('express');
var app = express();
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Credentials', true);
res.header('Access-Control-Allow-Origin', req.headers.origin);
res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE');
res.header(
'Access-Control-Allow-Headers',
'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept'
);
if ('OPTIONS' === req.method) {
res.status(200).end();
} else {
next();
}
});
//Config
function handle_database(req, res) {
db.connect(db.MODE_PRODUCTION, function (err) { //connect to database
if (err) throw err;
console.log("Connected");
})
res.send("hello world");
// db.select('*', 'enikio1.customer', 'FirstName = "Nick"', res);
}
app.get("/", function (req, res) {
handle_database(req, res);
});
//Listen,Hey
app.listen(3000);
console.log("App listening on port 3000");
私のアプリでは、私はサーバーからの応答を得ることができません。 AngularのAjaxを使用してレスポンスを取得し、ストリングに対するレスポンスを表示しましたが、何も起こりません。何らかの理由で私はサーバーからの応答を得ることができません。いくつかのことを明確にするために、私のMySQLサーバはAzureでホストされていますが、私はlocalhost上のNodeJSサーバを(今のところは)実行しています。私はアンドロイドエミュレータ(Android SDKの標準のもの)にフロントエンドを実行します。私はまた別の場所にサーバー側とフロントエンドを持っていますが、それは問題ですが、すべてのチュートリアルでは、ノードと角度を使ってWebアプリケーションを作成しているのを見て、同じ職場でそれらを持っています。モバイルアプリになるここに私のコントローラがあります。
.controller('AccountCtrl', function ($scope, $state,$http,$ionicPopup, $rootScope) {
$scope.signin = function() //signin is in the submit button
{
console.log("Some")
str="http://localhost:3000";
data = {};
datastr = "";
$http.get(str)
.success(function (response){
// data = response[0].Email;
// $scope.data.email = data;
datastr = response;
$scope.server = datastr; //server is a label
})
}
});
今、私ははっきりとウェブ/アプリの開発には本当に新しいですし、何が起こっているのか分からない、私は本当にAngularJS、コルドバのフレームワークとすべてのことを学び始めるたかっプラス今、私はまたの機会を持っています非常に便利なNodeJSを学んでください。しかし、この問題は私には本当に混乱しています。アプリケーションが私のパスに行くときに理解したことに基づいて、私はdatastrに保存した応答を取得し、次に$scope.server
というラベルに渡しますので、hello world
が印刷されます。しかし、何も起こりません。
アイデア?
ブラウザで「ionic serve」を実行してエラーメッセージがないか確認してください。 '' CORS''のように思えます。 http://blog.ionic.io/handling-cors-issues-in-ionic/ – raj
私は最初にCORSを避けるためにブラウザから実行していませんでしたが、できるだけ早く試してみてください:) – NickCh
だから、明らかに私は 'ionic.project'を編集しました。これは将来的に知りたい人のために' ionic.config.json'に改名されました。あなたが提供したリンクのコメントは、クロム拡張子 'Allow-Control-Allow-Origin'を提案しました。実際に接続が実際に起こっているのを実際に見ることができました。私は最初に、 'console.log(res.send(" hello world "));'これは実際にjsonだったので、これを文字列にして、今度は 'Object Object '私は私のlocalhostに行く:3000または私がアプリで提出をクリックするたびに。 – NickCh