Как мне обработать ответы от экспресса с угловым?

0

Это для проекта для колледжа. Я с трудом понимаю, как обрабатывать экспресс-ответы с угловым. Мой партнер занимался большей частью задней части, и я позаботился о большинстве интерфейсов, о том, как получить информацию от экспресс и использовать ее на передней панели. Наша маршрутизация ниже, если это поможет.

// set variables for environment
var express = require('express');
var app = express();
var path = require('path');
var bodyParser = require('body-parser');

//tell express to use the bodyParser middleware
app.use(bodyParser());

//start the mysql interface
var mysql = require('mysql');
var mysql      = require('mysql');
var connectionPool = mysql.createPool({
  host     : 'localhost',
  user     : '<user>',
  password : '<password>',
  database : '<table>'
});

// connection.connect();

// connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
//   if (err) throw err;

//   console.log('The solution is: ', rows[0].solution);
// });

// connection.end();

// Set server port
app.listen(80);
console.log('server is running at 127.0.0.1:80');

// views as directory for all template files
app.set('views', path.join(__dirname, 'views'));

// instruct express to server up static assets
app.use(express.static('public'));

// set routes
app.get('/', function(req, res) {
    res.sendFile(__dirname + '/views/index.html');
});

app.get('/:file', function(req, res) {
    res.sendFile(__dirname + '/views/' + req.params.file);
});

app.get('/req/:itemname', function(req,res)
{
    connectionPool.getConnection(function(err, connection)
    {
        if(err)
        {
            console.log('connection error: \n\n\n');
            console.log(err);
            res.statusCode = 503;
            res.send({
                result: 'error',
                err:    err.code
            });
        }
        else
        {
            var query = 'SELECT * FROM Product WHERE name LIKE \'%' + req.params.itemname +'%\' ORDER BY ProductID asc';
            console.log(query);
            connection.query(query, req.params.id, function(err, rows, fields)
            {
                if(err)
                {
                    console.log(err);
                    res.statusCode = 500;
                    res.send({
                        result: 'error',
                        err:    err.code
                    });
                }
                else
                {
                    res.send({
                        result: 'success',
                        err:    '',
                        fields: fields,
                        json:   rows,
                        length: rows.length
                    });
                }
            });
            connection.release();
        }
    });
    // connection.destroy();
});

app.post('/login/', function(req,res)
{
    //debug for routes to make sure everything is working properly
    console.log('I am in the login post route');

    //connect to SQL pool
    connectionPool.getConnection(function(err, connection)
    {
        if(err)
        {
            console.log('connection error: \n\n\n');
            console.log(err);
            res.statusCode = 503;
            res.send({
                result: 'error, having issue connecting to MYSQL DB instance',
                err:    err.code
            });
        }
        else
        {
            var user = req.body.email;
            user = user.toUpperCase();
            var password = req.body.password;

            console.log('user: ' + user);
            console.log('password: ' + password);

            var query = 'select COUNT(*) AS recordCount, isStaff from userTable where email = \''+user+'\' AND password = \''+password+'\'';
            console.log(query);
            connection.query(query, req.params.id, function(err, rows, fields)
            {
                if(err)
                {
                    //another connection issue
                    console.log('in 500 error box')
                    console.log(err);
                    res.statusCode = 500;
                    res.send({
                        result: 'error',
                        err:    err.code
                    });
                }
                else
                {
                    //if the query was successful, we check to see if their exists a record of this query

                    //debug print count of records that match parameters
                    // console.log(rows[0].recordCount)

                    //if the return query has a user that has admin privileges, redirect them to the admin page

                    console.log(rows[0].isStaff);
                    if(rows[0].recordCount >=1 && rows[0].isStaff == 1)
                    {
                        console.log('at least one staff record')
                        res.sendFile(__dirname + '/views/admin.html')
                        // next();
                    }
                    else if(rows[0].recordCount >=1 && rows[0].isStaff == 0)
                    {
                        console.log('at least one nonstaff record')
                        res.sendFile(__dirname + '/views/customer.html')
                        // next();
                    }
                    else 
                    {
                        console.log('invalid login')
                        console.log('in 503 error box, invalid user')
                        res.statusCode = 503;
                        res.send({
                            statuscode: '503',
                            result: 'E-mail or Password is incorrect',
                        });
                    }
                }
            });
            connection.release();
        }
    });
});

В нижней части кода мы хотели бы обработать случай, когда у нас есть ошибка входа. Сейчас он просто отправляет обратно {{statuscode: 503, result: "E-mail или пароль неверно"}} на пустой странице. На переднем конце отображается модальный запрос с информацией о знаке. При успехе он перенаправляется на другую страницу. При отказе мы хотели бы сказать, что передняя часть оставит модальный на открытой странице и отправит сообщение предупреждения в теле модальности. Пожалуйста помоги.

Изменение: Цель проекта - работать с базой данных. Для проекта требуется веб-приложение в качестве интерфейса, и поскольку наш следующий курс требует использования стека MEAN, мы решили продолжить обучение и начать немного учиться.

  • 0
    Есть ли у вас угловой код? Как служба $http и два основных доступных маршрутизатора позволяют выполнять довольно обширную обработку ошибок. Первый, в частности, даст вам доступ к деталям ошибок, включая коды состояния.
  • 0
    В качестве примечания, вы можете прочитать немного о внедрении sql: en.wikipedia.org/wiki/SQL_injection . У вас есть несколько опасных запросов, создаваемых из необработанных данных тела POST
Показать ещё 2 комментария
Теги:
express

1 ответ

0

В своем вызове $ http на интерфейсе просто передайте второй аргумент, когда вы обрабатываете обратный вызов с ошибкой. Служба $ http будет запускать эту функцию в любое время, когда сервер отправит обратно статус ошибки.

https://docs.angularjs.org/api/ng/service/ $ http

$http.get('api/route')
  .then(function successCallback(response) {
    loginSuccessRedirect();
  }, function errorCallback(response) {
    handleLoginError();
  });

Ещё вопросы

Сообщество Overcoder
Наверх
Меню