Node JS:在Angular JS下调用Http服务

时间:2017-05-22 14:04:09

标签: node.js express

我是节点js的新手。

最初页面加载localhost:3000

调用index.html并重定向到allUsers.html

app.js

var express = require('express');
var path = require('path');
var app = express();
path = require('path'),
index = require('./routes/index');

app.use(express.static(path.join(__dirname, '.')));
app.use(express.static(path.join(__dirname, 'admin_4_angularjs')));

app.get('/', function(req, res)
{
        res.sendFile(path.join(__dirname + '/admin_4_angularjs/index.html'));
});
module.exports = app;
var port = 3000;
app.listen(port, function()
{
        console.log('Listening on ' + port);
});

main.js

// UI Bootstrap
.state('allUsers',
{
        url: "/allUsers.html",
        templateUrl: "views/allUsers.html",
        data:
        {
                pageTitle: 'Users List'
        },
        controller: "allUsersController",
        resolve:
        {
                allUserslist: function($http)
                {
                        return $http.get("/users").then(function(response)
                        {
                                return response.data;
                        })
                }
        }
})

index.js

var express = require('express');
var mongodb = require('mongodb');
var router = express.Router();
var app = express();
var MONGODB_URI = 'mongodb://xxx.xxx.1.23:27017/RELRE';
var db;
var coll;
mongodb.MongoClient.connect(MONGODB_URI, function(err, database) {
  if(err) throw err;
  db = database;
});
router.get('/users', function(req, res) {
 var collectionInfo = db.collection("UsersInfo");
            collectionInfo.find({}).toArray(function(err, employees) {
               res.status(200).json({'myCollection' : employees});
            });
});

module.exports = router;

我在浏览器控制台下获得了404。

http://localhost:3000/users 404(未找到)

您能否告诉我如何解决此问题?

1 个答案:

答案 0 :(得分:4)

你需要你创建的路由器,但是你需要告诉express使用它。

最简单的方法是在app.use(index)路线之后将app.js添加到GET

app.get('/', function(req, res)
{
        res.sendFile(path.join(__dirname + '/admin_4_angularjs/index.html'));
});
app.use(index)

Express会自上而下查找匹配的路由,因此在查找/users路由时,它会首先检查您的/路由,然后检查您包含的路由器的路由。

但是,如果您计划使用多个路由器,我还建议提供app.use的基本路径,指示路由器应处理以该基本路径开头的所有路由。例如,在您的特定情况下:

app.use('/users', index) // may also want to give the router a more meaningful name

然后在index.js中修改路由器,如下所示:

router.get('/', function(req, res) { // within the router, '/users' is now assumed to be the base path
    // Logic for this route
});