#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. Он предназначен для использования на сервере, а не из браузера.