MEAN堆栈中的路由 - 使用expressjs框架为Angular js和node.js提供路由帮助

时间:2016-02-14 13:57:32

标签: javascript angularjs node.js express

  

我已经解决了这个问题,但我仍然不确定我这样做是否正确。如果有任何替代方法,我可以一次性发送文件和数据,那将更有用。请提供相同的输入。

我在前端使用Angular js,在后端使用node.js上的Express js。

我想做什么?

我正在尝试实施类似facebook的工具,为您提供独特的个人资料名称或说出用户名。

因此 - 用户可以说类型为domain.com/hisprofileid

现在,我想要做的是在服务器端进行搜索,这将根据搜索结果向前端发送具有精确数据的响应。

然后前端将加载数据。

到目前为止我做了什么?

老实说,我无法正确地思考它,我所建立的系统不起作用。

这就是我所做的。服务器端的localhost:portnumber根调用发送一个名为index.html的文件。这只是索引文件而已。

现在在服务器端,我已经设置了处理localhost:portnumber/anything的路由,该路由将profilepage.html文件作为响应发送。

现在使用$ locationprovider的profilepage.html控制器的控制器有这个代码来单独调用服务器端(请参考下面的代码)[我坚信这是微不足道的,这就是我为什么的原因丢失]

请查看下面给出的一些代码。

前端部分

$routeProvider
    .when('/', {
        templateUrl: 'index12.html',
        controller: 'someCtrl'
    })
    .when('/:merchantid', {
        templateUrl: 'index12.html',
        controller:'userCtrl'

    })

app.controller('userCtrl', function ($scope, Upload, $timeout, $http) {

    console.log("Here");

    var merchantid = "suresh";
    $http.get('/merchant/' + merchantid ).success(function(response)
    {
        console.log("response");
        console.log(response);
    });
});

服务器端

app.get('/', function (req, res) {
     console.log("Global");
     res.sendFile(__dirname + '/public/index13.html');
});
app.get('/:merchantid', function (req, res) {
     console.log("we are here");
     console.log(req.params); 
      res.sendFile(__dirname + '/public/index12.html');    
});
app.get('/merchant/:merchantid', function (req, res) {
     console.log("Detail here");
     console.log(req.params); 
     res.json({message: 'here'});       
});

请提出建议。

1 个答案:

答案 0 :(得分:0)

这是我为解决问题所做的工作。

localhost:portnumber/anything - 当调用此项时,我直接调用服务器并检查该特定人员是否实际已注册,然后根据该结果打开相应的页面。

app.get('/:profileid', route_profileid.fetchprofile);

然后处理与之关联的数据的函数。

modename.findOne({
            'profileid': uniqueid
        }, function (err, docs) {
            if (err) {
                console.log("Error in finding data" + err);
            } else {
                if (docs) {
                    console.log(process.cwd());
                    res.sendFile(process.cwd() + '/public/profile.html');
                }
                if (!docs) {
                    console.log("Nothing Found related to that query");
                    res.sendFile(process.cwd() + '/public/error.html');
                }
            }

现在,配置文件页面加载了特定用途的配置文件数据,然后这里是角度路由器的代码。 [此角度代码附加到将显示的配置文件页面。]

 $rootScope.$on('$routeChangeSuccess', function () {
     console.log($routeParams.profileid);
     var profileid = $routeParams.profileid;
     $http.get('/profile/' + profileid).success(function (response) {
         console.log(response);
         $scope.profile = response;
     });
 });

注意:需要加入$RouteParams$route$routeScope和ngRoute模块以促进活动。

此处针对该用户的实际数据发出新请求。

 app.get('/profileid/:profileid', route_profiledata.profiledata);

然后在那个特定的函数数据从db中获取并且适当的响应被发送回用户。