如何使用角度处理快递的响应?

时间:2015-11-28 00:52:29

标签: angularjs express

这是一个大学项目。我很难理解如何使用角度处理快速响应。我的合作伙伴处理了大部分后端,我负责大部分前端,如何从快递获取信息并在前端使用它。我们的路由如下,如果有帮助的话。

// 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,结果:&#39;电子邮件或密码不正确&#39;}}。 在前端,显示一个模态,请求登录信息。成功后,它会重定向到不同的页面。如果失败,我们想告诉前端将页面上的模态保留为打开状态,并在模态正文中发布警告消息。 请帮忙。

编辑:项目的目的是使用数据库。该项目需要一个基于Web的应用程序作为界面,因为我们的下一个课程需要使用MEAN堆栈,所以我们决定继续学习并开始学习。

1 个答案:

答案 0 :(得分:0)

在前端的$ http调用中,只需在处理回调错误时传递第二个参数。只要服务器发回错误状态,$ http服务就会运行该功能。

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

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