【问题标题】:restangular doesnt return from node-restful APIrestangular 不会从 node-restful API 返回
【发布时间】:2015-09-11 02:03:01
【问题描述】:

对于我的 MEAN Web 应用程序,我真的被这个 REST API restangular 配置所困扰。因此,我使用 node-restful API 创建了 express 服务器,并且可以使用 POSTMAN 执行 CRUD 操作,并且我的数据通过 Mongoose 保存到 MongoDB。

客户端应用程序是一个使用 grunt 的 yeoman 引导程序,如果我在控制器中按照下面的方式定义它,我可以看到范围内的硬编码数据,但是当我尝试使用 Restangular GetList() 时,我遇到了我可以看到的问题之前发布过从 API Restangular setbaseURL http://localhost:8080/horse 返回数据。

我了解getList 不返回数据,工厂服务正在执行此操作,但我将其设置为在线示例,无法将 MongoDB 中的所有记录返回到角度视图。还尝试了ng-resource,我不明白为什么我不能将数据从 API 添加到范围。

下面的代码使用<td>horse in horses</td> tableHorseCtrl返回Horsename"ngview"罚款

angular.module('HorseApp')
  .controller('HorseCtrl', function ($scope) {
    $scope.horses = [
       {
       horseName: 'MAYKBE DIVA'
       }
    ];

  });

下面不会返回数据,我的工厂是在 app.js 中设置的

'use strict';

angular.module('HorseApp', ['restangular']);

app.controller('HorseCtrl', function($scope, Restangular) {
$scope.horses = Restangular.all('horses').getList().$object;
        });

app.js

'use strict';

angular.module('HorseApp', [
    'ngRoute'
    'restangular'
  ])
  .config(function ($routeProvider, RestangularProvider) {
    RestangularProvider.setBaseUrl('http://localhost:8081/horse');
    $routeProvider
      .when('/', {
        templateUrl: '/views/index.html',
        controller: 'HorsesCtrl'
      });
  })
.factory('HorseRestangular', function(Restangular) {
  return Restangular.withConfig(function(RestangularConfigurer) {
    RestangularConfigurer.setRestangularFields({
      id: '_id' 
    });
  });
})
.factory('Horse', function(HorseRestangular) {
  return HorseRestangular.service('horse');
})

我已按照下面的方法将 src 添加到 index.html,请帮助:)

<script src="bower_components/jquery/dist/jquery.js"></script>
     <script src="bower_components/angular/angular.js"></script>
 <script src="bower_components/angular-ui-select/dist/select.js"></script>
    <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script>
   <script src="bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js"></script>
   <script src="bower_components/angular-resource/angular-resource.js"></script>
<script src="bower_components/restanuglar/dist/restangular.js"></script>

【问题讨论】:

  • 所以 12 小时后,我使用 $resource('localhost:8081/horse 在我的视图中显示数据:) 可能很快就会有 restangular 工作但仍然需要一些帮助,干杯!!

标签: angularjs node.js mongodb rest restangular


【解决方案1】:

据我所知,您将 Restangular 的基本 url 全局设置为 http://localhost:8081/horse,并且在您的 HorseCtrl 中,您要求 Restangular 访问 horses 端点并获取列表。这将有效地访问http://localhost:8081/horse/horses 的数据。我不确定这是否是预期的路径。

您的 HorseRestangular 和 Horse factory 未被使用。如果您要将控制器的 Restangular 注入更改为 Horse,它将访问 http://localhost:8081/horse/horse,并通过 _id 属性获得 id。除非您将通过 restangular 与多个 API 进行通信,否则您不一定需要所有服务。为了简化它,你可以这样做:

angular.module('HorseApp', ['restangular'])
.config(function ($routeProvider, RestangularProvider) {

    RestangularProvider.setBaseUrl('http://localhost:8081');

    $routeProvider
      .when('/', {
        templateUrl: '/views/index.html',
        controller: 'HorsesCtrl'
      });
    });
})
.controller('HorseCtrl', function ($scope, Restangular) {
    $scope.horses = Restangular.all('horses').getList().$object;
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多