Page 185 - AngularJS权威教程
P. 185

16.8 和 MongoDB 通信   165


                          });                                                                        1
                      };
                  });

                  当向后端发送请求时,请求会被添加token参数。                                                           2
                  自动添加身份令牌  更进一步,如果想要为每个请求都添加上当前用户的令牌,可以创建一
              个请求拦截器,并将令牌当作参数添加进请求中。                                                                 3
                  创建请求拦截器的方法和前面创建响应拦截器的方法类似,只要将拦截目标从response换成
              request即可。                                                                             4

                  angular.module('myApp', [])
                  .config(function($httpProvider) {                                                  5
                      // 在这里构造拦截器
                      var interceptor = function($q, $rootScope, Auth) {
                          return {
                              'request': function(req) {                                             6
                                  return req;
                              },
                              'requestError': function(reqErr) {                                     7
                                  return reqErr;
                              }
                          };
                      };                                                                             8
                  });

                  在请求拦截器内部可以加入向请求中添加token参数的业务逻辑,通过用户是否持有令牌来                                         9
              检查身份验证情况,同时需要确保不会将手动添加的同名参数覆盖。

                  function($q, $rootScope, Auth) {                                                   10
                      return {
                          'request': function(req) {
                              req.params = req.params || {};                                         11
                              if (Session.isAuthenticated() && !req.params.token) {
                                  req.params.token = Auth.getToken();
                              }
                              return req;                                                            12
                          },
                          // ...
                                                                                                     13
              16.8 和 MongoDB 通信
                                                                                                     14
                  即使没有后端服务,我们依然可以直接同提供了RESTful接口的数据库进行通信。

                  可以直接同Mongo进行通信,而无需创建后端服务。
                                                                                                     15

                                                         ①
                          在这个例子中,我们使用MongoLab ,这是一个SAAS服务,提供了可管理的
                         MongoDB实例。                                                                  16

                  为了同MongoDB通信,首先需要针对Restangular对象进行一些自定义配置。
                                                                                                     17

              ——————————                                                                             18
                 ① https://mongolab.com/
   180   181   182   183   184   185   186   187   188   189   190