Всем привет!
Помогите, пожалуйста, разобраться. Хочу сделать CRUD приложение (тот же туду, например) на angular, как основу, так скажем. Хочу сделать возможность работы с бд (чтение, запись, изменение, удаление) с помощью данных технологий (angular, node+express, mysql). В основном, конечно, интересуют данные операции со стороны angular, но нужен и какой-то backend, с которым на данный момент пытаюсь разобраться)
Предположим, есть RESTful API на nodejs + express, в качестве СУБД используется mysql. Код следующий:
var app = require('express')();
var http = require('http').Server(app);
var mysql = require('mysql');
var bodyParser = require("body-parser");
var connection = mysql.createConnection({
host : 'localhost',
user : '',
password : '',
database : 'books',
});
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
connection.connect();
app.get('/',function(req,res){
var data = {
"Data":""
};
data["Data"] = "Welcome to Book Store DEMO...";
res.json(data);
});
app.get('/book',function(req,res){
var data = {
"error":1,
"Books":""
};
connection.query("SELECT * from book",function(err, rows, fields){
if(rows.length != 0){
data["error"] = 0;
data["Books"] = rows;
res.json(data);
}else{
data["Books"] = 'No books Found..';
res.json(data);
}
});
});
app.post('/book',function(req,res){
var Bookname = req.body.bookname;
var Authorname = req.body.authorname;
var Price = req.body.price;
var data = {
"error":1,
"Books":""
};
if(!!Bookname && !!Authorname && !!Price){
connection.query("INSERT INTO book VALUES('',?,?,?)",[Bookname,Authorname,Price],function(err, rows, fields){
if(!!err){
data["Books"] = "Error Adding data";
}else{
data["error"] = 0;
data["Books"] = "Book Added Successfully";
}
res.json(data);
});
}else{
data["Books"] = "Please provide all required data (i.e : Bookname, Authorname, Price)";
res.json(data);
}
});
app.put('/book',function(req,res){
var Id = req.body.id;
var Bookname = req.body.bookname;
var Authorname = req.body.authorname;
var Price = req.body.price;
var data = {
"error":1,
"Books":""
};
if(!!Id && !!Bookname && !!Authorname && !!Price){
connection.query("UPDATE book SET BookName=?, AuthorName=?, Price=? WHERE id=?",[Bookname,Authorname,Price,Id],function(err, rows, fields){
if(!!err){
data["Books"] = "Error Updating data";
}else{
data["error"] = 0;
data["Books"] = "Updated Book Successfully";
}
res.json(data);
});
}else{
data["Books"] = "Please provide all required data (i.e : id, Bookname, Authorname, Price)";
res.json(data);
}
});
app.delete('/book',function(req,res){
var Id = req.body.id;
var data = {
"error":1,
"Books":""
};
if(!!Id){
connection.query("DELETE FROM book WHERE id=?",[Id],function(err, rows, fields){
if(!!err){
data["Books"] = "Error deleting data";
}else{
data["error"] = 0;
data["Books"] = "Delete Book Successfully";
}
res.json(data);
});
}else{
data["Books"] = "Please provide all required data (i.e : id )";
res.json(data);
}
});
http.listen(8080,function(){
console.log("Connected & Listen to port 8080");
});
В postman все работает, но как теперь связать получившееся с angular? Для начала, хотя бы просто вывести в таблицу (ID, книга, автор, цена). Как с помощью указанного выше кода открывать index.html, что необходимо добавить? В index.html файле будет таблица примерно такая:
<table>
<tr>
<th>Id</th>
<th>Book name</th>
<th>Author name</th>
<th>Price</th>
</tr>
<tr ng-repeat="book in listOfBooks">
<td>{{book.id}}</td>
<td>{{book.bookName}}</td>
<td>{{book.authorName}}</td>
<td>{{book.price}}</td>
</tr>
</table>
Код app.js, который должен выводить данные из json файла в таблицу
$scope.getBooks = function() {
var httpRequest = $http({
method: 'GET',
url: 'json', // (какой URL должен быть тут, чтобы получить JSON файл который генерирует API?)
data: data // что необходимо вставить сюда?
}).success(function(data, status) {
$scope.listOfBooks = data;
});
};
В правильном ли направлении я вообще двигаюсь?
Возможно, есть какие то заглушки / эмуляторы бекэнда и не будет необходимости разбираться во всем этом, а спокойно делать приложение на angular, которое будет позволять совершать crud операции?