Я сделал это
Чтобы ответить на мой собственный вопрос, и если из-за этого есть какая-то душа в отчаянии, вот оно.Создайте базу данных и таблицу в phpmyAdmin или в нужной вам базе данных.
CREATE TABLE IF NOT EXISTS 'tasks' (
'id' int(11) NOT NULL,
'task' varchar(200) NOT NULL,
'status' tinyint(1) NOT NULL DEFAULT '1',
'created_at' datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE 'tasks' ADD PRIMARY KEY ('id');
ALTER TABLE 'tasks' MODIFY 'id' int(11) NOT NULL AUTO_INCREMENT;
INSERT INTO 'tasks' ('id', 'task', 'status', 'created_at') VALUES
(1, 'Find bugs', 1, '2016-04-10 23:50:40'),
(2, 'Review code', 1, '2016-04-10 23:50:40'),
(3, 'Fix bugs', 1, '2016-04-10 23:50:40'),
(4, 'Refactor Code', 1, '2016-04-10 23:50:40'),
(5, 'Push to prod', 1, '2016-04-10 23:50:50');
Я почитал это из чтения этого поста Создание RESTful API с Express js, Node js / MySQl - Arjun
2.Бэкэнд: Сервер + конечная точка API
const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
// Connect my db
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'dbName'
});
connection.connect(function(err) {
if (err) {
console.error('error connecting: ' + err.stack);
return;
}
console.log('connected as id ' + connection.threadId);
});
app.get('/', function (req, res) {
res.send('Hello World!');
});
// Port that will be listened
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
// the query
querie = 'SELECT * FROM tasks';
**THIS IS THE API ENDPOINT FOR THE GET REQUESTS**
app.get('/todos', function (req, res) {
connection.query(querie, function (error, results, fields) {
if (error) throw error;
return res.send({ error: false, data: results, message: 'Todos list.' });
});
});
3.Angular
Файл app.component.html
<button
(click)="getData()">GET Profile
</button>
4.Файл app.component.ts
import { Component } from '@angular/core';
import { HttpClient } from "@angular/common/http";
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor (private httpClient:HttpClient){ }
getData(){
this.httpClient.get('/api/todos')
.subscribe(
(data:any[]) => {
console.log(data);
}
)
}
}
Наконец
Теперь вам нужно запустить свой угловой проект в одном окне терминала, а сервер - в другом.Один будет в порту 4200 (угловой), а сервер будет в localhost: 3000, как мы настроили его в нашем app.js .
Проблема в том, что когда вы делаете запрос getс вашего внешнего интерфейса через порт: 4200 вы приводите к ошибке.В нем говорится, что ваши запросы выполняются через http://localhost:4200/localhost:3000
или что-то очень похожее (уже поздно, и я не задокументировал точную ошибку, извините).Поэтому после некоторого исследования я столкнулся с этим постом https://medium.freecodecamp.org/the-best-ways-to-connect-to-the-server-using-angular-cli-b0c6b699716c и использовал «прокси-подход».
Voilá , в моей консоли javascript есть массив со всем, что моя база данныхимел внутри.
Прочтите эту статью, чтобы иметь более четкое представление обо всем.Это довольно слабое объяснение (для продвинутых).
- лучшие способы подключения к серверу с использованием angular-cli
- тот же порт-4200-для-производства-ан
- истории-прокси
- прокси-для-api-call-for-your-angular-cli-app
С уважением.