подключить угловое приложение к серверу - PullRequest
1 голос
/ 08 марта 2019

Я новичок в angular, я создаю свой Nodeserver с API Rest Crud с моей базой данных Mysql, и я хочу связать его с моим проектом angular (ngx nebular), но я не смог этого сделать, спасибо за помощь

это app.js

 var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var bodyParser = require('body-parser');
var cors = require('cors');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var user=require('./model/user');
var api = require('./routes/api'); 

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

app.use(cors());
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/user',api);

// catch 404 and forward to error handler
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

`

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Вы должны прослушать все запросы GET и отправить как единственный файл свой index.html, который фактически должен содержать ваш Angular SPA.Примерно так:

app.get('*', (req, res) => {
  res.sendFile(path.join(__dirname, 'index.html'));    
});

Вы можете взглянуть на документ Express: http://expressjs.com/fr/api.html#res.sendFile

0 голосов
/ 08 марта 2019

Вам нужно загрузить библиотеку mysql, чтобы получить доступ к ее функциям. Вам также необходимо установить обработчик GET для домашней страницы и назначить ему маршруты.

1) Ввести MySQL @ app.js

const mysql = require('mysql');

// ... other stuff here ...

// the mysql.createConnection function takes in a configuration object 
// this contains host, user, password and the database name.
const db = mysql.createConnection ({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'latelist'
});

// connect to database
db.connect((err) => {
    if (err) {
        throw err;
    }
    console.log('Connected to database');
});
global.db = db;

2) Направьте функцию yourHomepage

В вашем случае мы уже перенаправляем через indexRouter.js, и важно, чтобы это было до шага 3 в app.js.

app.use('/', indexRouter);

3) Назначить обработчик GET для /

Наконец, убедитесь, что вы установили обработчик GET для домашней страницы где-то в app.js, ala:

app.get('/', yourHomepageFunction);

Ради потомков, вот пример того, как indexRouter.js может выглядеть:

module.exports = {
    yourHomepageFunction: (req, res) => {
        res.render("homepage.ejs", {
             // Stuff here such as passing title variables, etc
        });
    }
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...