Подтвердить что ты не робот

Использование базы данных в AngularJS - где я должен писать код подключения DB?

Теперь я создаю веб-приложение, используя Node.js, AngularJS и MySQL или MongoDB. Однако, когда я пытался использовать AngularJS с контроллером, который включает в себя наборы данных, извлеченные из базы данных, мне интересно, где я должен написать код в...

Теперь я пишу в следующем коде (search.ejs, не включая полную часть (например, тег 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'
        }
    ]
}

Однако то, что я хочу сделать, это вместо того, чтобы вручную записывать данные в переменной $scope.list, использовать данные в базе данных MySQL или MongoDB. (И MySQL - мой предпочтительный язык, но MongoDB кажется лучшим в этом случае, я думаю.) Итак, как я могу подключиться к БД?

У меня также есть один файл с именем search.js, который является следующим:


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

И, наконец, я также хочу услышать от вас, следует ли сначала сохранять данные из базы данных в любой файл и использовать ее, открывая и закрывая файл, или я должен напрямую подключаться к базе данных всякий раз, когда запрос приходит для извлечения данных, в условия работы и проблемы безопасности (данные в базе данных будут обновляться каждый день, поэтому я должен запустить script, чтобы автоматически воссоздать обслуживаемый файл).

Спасибо.

4b9b3361

Ответ 1

Я считаю, что лучше всего использовать http-маршрут, из которого вы можете получить список. Предположим, что это список статей, а затем вы:

  • у вас есть маршрут на вашем веб-сервере, с которого вы могли бы: GET /articles (вы могли бы легко реализовать его с помощью драйверов mongodb collection и find)
  • на вашем контроллере angular:

(код клиента)

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

Что касается второго вопроса, вы можете отобразить список с сервера, но если вы хотите обновить список, вам нужно будет использовать $http независимо. кроме того, обратите внимание, что angular шаблоны используют {{}}, поэтому вы можете переопределить их, если не будете осторожны - почему я считаю, что это не очень хорошая практика. если, однако, у вас была какая-то конфигурация, которую вы хотите ввести с вашего веб-сервера, тогда вы можете ввести код, подобный этому (как script):

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

а затем вы можете добавить "myConfiguration" ко всем вашим контроллерам (не забудьте добавить "myModule.configuration" в массив зависимостей)