Извлечение данных из базы данных с помощью флажка Angular

#javascript #mysql #angular

#javascript #mysql #angular

Вопрос:

Я пытаюсь получить данные из базы данных (MariaDB), и если они существуют, флажок должен быть установлен. Например, я приведу вам скриншоты моего приложения: Здесь я ввожу некоторые данные и отправляю их в базу данных (с помощью кнопки отправки)

В базе данных у меня есть две таблицы. Сначала «причины».В таблице « reasons » в столбце «name» я сохраняю данные из поля ввода.

     **table "reasons"**
    id   |   name
    -------------
    1    |   reason1
    4    |   reason2
    5    |   reason3
    6    |   reason4
    7    |   reason 5
    ..   |   ......
  

Вторая таблица — «reason_to_transaction».Здесь « reason_id » является ссылкой на « id » из таблицы « reasons «, т.е. каждое «название причины» имеет « transaction_type » (которых может быть больше одного, например, id = 4 из таблицы « reasons » имеет два « transaction_type » -продавать, покупать.

     **table "reason_to_transaction"*
 reason_id |   transaction_type
    ----------------
      1    |   sell
      4    |   sell
      4    |   buy
      5    |   sell
      5    |   buy
      5    |   pko
      6    |   sell
      7    |   sell
       ..  |   ......
  

Когда я открываю меню «причины» (на болгарском: «основание»), я получаю это представление:
Причиныменю
Когда я нажимаю на некоторые из этих имен, я получаю это представление (режим редактирования):
Режим редактирования

В поле ввода у меня есть activeItem.id на который я нажал. Под этим полем ввода есть флажки, которые я хочу установить. Это моя проблема. Я не знаю, как получить данные из этих двух таблиц из базы данных и установить флажок, который необходим. У меня есть этот код:

Это мой контроллер, на котором я создаю массив флажков:

 app.controller("ReasonCtrl", function($rootScope, $scope){
    $scope.items = [];
    $scope.editMode = false;
    $scope.activeItem = false;
    $scope.albums = [{
        id: 1,
        name: 'sell'
      },
      {
        id: 2,
        name: 'buy'
      },
      {
        id: 3,
        name: 'pko'
      },
      {
        id:4,
        name: 'rko'
      }
      ];
  

С помощью этой функции я получил данные из ActiveItem:

 $scope.editItem = function(item){
        $scope.editMode = true;
        $scope.activeItem = angular.copy(item);
        $('.editMode1').show();
        $('.addMode1').hide();
        $('.myBox').hide();
        };

    $scope.createItem = function(item){
        $scope.editItem({});
    };

    $scope.saveItem = function(){
        console.log($scope.activeItem);
        //delete $scope.activeItem.hash_method
        var objectToSave = {

            name: $scope.activeItem.name,
            id: $scope.activeItem.id
        };

        if($scope.activeItem.id){
            defaultAdapter.query('UPDATE reasons SET name = :name WHERE id =:id ',
              { replacements: objectToSave, type: Sequelize.QueryTypes.UPDATE }
            ).then(defaultAdapter.query('SELECT rt.transaction_type,rt.reasons_id FROM reason_to_transaction rt INNER JOIN ',{type: Sequelize.QueryTypes.UPDATE}))
            .then(projects => {
              console.log(projects);
              $scope.editMode = false;
                $scope.activeItem = false;
                $scope.refresh();
            });
        } else {
            defaultAdapter.query('INSERT INTO reasons SET name = :name',
              { replacements: objectToSave, type: Sequelize.QueryTypes.UPDATE }
            ).then(projects => {
              console.log(projects);
              $scope.editMode = false;
                $scope.activeItem = false;
                $scope.refresh();
            });

        }

    };
  

Я все еще учусь программировать, и я понятия не имею, как получить эти данные и установить эти флажки…
Кто-нибудь может мне помочь?
Я использую Angular (метод sequelize) и MariaDB
Спасибо!

Комментарии:

1. Похоже, вы пытаетесь запросить свою базу данных непосредственно из браузера. Вы не можете этого сделать. Если бы это было возможно, любой мог бы сделать что угодно с вашей базой данных… Ожидаемый срок службы ваших данных: несколько часов, если вам повезет 🙂 Вы должны выполнить вызов на свой сервер, который безопасным способом запросит базу данных, а затем отправит результаты обратно клиенту.

2. Я делаю это с помощью метода Sequelize. «defaultAdapter. запрос() …» Или, может быть, я не понимаю вашего ответа?

3. Что такое sequelize? Что такое defaultAdapter?

4. Продолжение @JeremyThille основано на обещаниях Node.js ORM для Postgres, MySQL, MariaDB, SQLite и Microsoft SQL Server. Он обеспечивает надежную поддержку транзакций, отношений, быстрой и отложенной загрузки, репликации на чтение и многое другое. defaultAdapter — это просто переменная

5. Node.js да. Не Angular. Он предназначен для использования на сервере, а не из браузера.