2013-11-03 12 views
14

私は今、Node.js、AngularJS、そしてMySQLまたはMongoDBを使ってWebアプリケーションを構築しています。しかし、データベースからフェッチされたデータセットを含むコントローラでAngularJSを使用しようとしたとき、どこにコードを書くべきかと思います...AngularJSでデータベースを使用する - DB接続コードはどこに書き込むべきですか?

私は今、次のコードで検索しています完全な部分(例えばhtmlタグ)):

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script> 
<script src="/javascripts/searchController.js"></script> 
<div ng-app class="row" ng-controller="searchCtrl"> 
<input ng-model="query"> 
<ul class="search"> 
<li ng-repeat="i in list" | filter:query"> 
<a href="{{i.url}}">{{i.name}}</a> 
</li> 
</ul> 
</div> 

そして、私は、データベースからlist内のデータをフェッチし、それを使用したいです。だからここsearchController.jsファイルの:

function searchCtrl($scope){ 
    $scope.list = [ 
     { 
      'name': 'Michael', 
      'url': 'mic' 
     }, 
     { 

      'name': 'Bob', 
      'url': 'bob' 
     } 
    ] 
} 

はしかし、私は何をしたいMySQLやMongoDBのいずれかのデータベース内のデータを使用し、代わりに手動で$scope.list変数にデータを書き出すのです。 (そして、MySQLが私の好みの言語ですが、MongoDBはこのような方が良いと思われます。)どうすればDBに接続できますか?

私は、1つのファイルには、以下の一つである、search.jsと呼ばれています:


exports.index = function(req, res) { 
    res.render("search", { 
    }, function(err, res){ 
     res.render("index", { 
      content: res 
     }); 
    }); 
} 

そして最後に、私も、私が最初に任意のファイルにデータベースからのデータを保存してそれを使用するかどうかをあなたから聞きたいですデータベースのデータは毎日更新されるので、スクリプトを実行して自動的に再作成する必要があります。とにかく提供されたファイル)。

ありがとうございました。

+0

私はあなたの最初の質問に答えましたが、2番目の質問に対して私はあなたが開く必要があるファイルが分かりませんでした。 –

+0

ありがとうございます。私が 'ファイルに保存する 'の意味は以下の通りです:1)DBからデータを取り出し、その結果をファイルに保存します。 2)保存されたファイルを 'searchController.js'にロードし、その内容を' $ scope.list'変数の値にマップします。3)最後に、 'search.ejs'ファイルから変数にアクセスします。 – Blaszard

答えて

19

私は、あなたがリストを取得できるhttpルートを持つことをお勧めします。のは、それが記事のリストだと仮定しましょう、そしてあなた:

  1. あなたはできるから、Webサーバーでのルートを持っている:GET /articles(あなたが簡単にMongoDBのドライバにcollection & find機能を使用して、それを実装することができます)
  2. あなたの角度にコントローラ:ヨーヨーのよう

(クライアントコード)

function searchCtrl($scope, $http){ 
    $http.get("/articles").success(function(articles, status, headers, config) { 
      $scope.articles = articles 
    } 
} 

2番目の質問では、サーバーからリストをレンダリングできますが、リストを更新する場合は、$httpを使用する必要があります。さらに、角度テンプレートでは{{}}を使用しているので、注意しないと上書きする可能性があります。そのため、それは良い方法ではないと思うのです。

angular.module("myModule.configuration", []).constant('myConfiguration', {siteName:"http://www.my-site.com"); 

をして、あなたはすべてに「myConfiguration」を注入できます、しかし、あなたはあなたのウェブサーバから注入したいいくつかの設定を持っていた 場合、あなたは(スクリプトなど)は、このようなコードを挿入できあなたのコントローラ("myModule.configuration"を依存関係配列に追加することを忘れないでください)

+0

ありがとうございます。今はすべて正常に動作しています。元の投稿から2週間以上経過して以来、私はすでにそれをあきらめていました。間違いなく1以上upvoteしたい...ありがとう。 – Blaszard

関連する問題