检查Angular资源响应是否为空

时间:2014-11-23 20:59:55

标签: angularjs

我有一个返回承诺的服务。我想检查返回的值是否为空对象。我怎样才能做到这一点。我想我需要以某种方式从promise对象中提取返回的值。

这是我的资源:

app.factory('Auth', ['$resource',
  function($resource) {
    return $resource('/user/identify', {}, {
      identify: {
        url: '/user/identify'
      },
    });
  }
]);

然后在服务中:

Auth.identify(function(data) {

  // This always passes since data contains promise propeties
  if (!_.isEmpty(data)) {

  }
});

数据控制台日志提供:

Resource
  $promise: Object
  $resolved: true
  __proto__: Resource

当对象不为空但我想要更通用的方法时,我可以检查预期的属性。

2 个答案:

答案 0 :(得分:0)

要解包返回值,您可以直接访问承诺:

Auth.identify()
    .$promise
    .then(function(data) {
      if (!_.isEmpty(data)) {
        // ...
      }
    });

答案 1 :(得分:0)

你这么近。你不应该拨打回复#34;数据"当它实际上是一个 Resource 对象时,它看起来很像你发布的Resource对象:

$resource('/api/...').get({...}).then(function(response) {
  if (response.data) {
    // the response has a data field!
  }
}

// note: this is using query(), which expects an array
$resource('/api/...').query({...}).then(function(response) {
  if (response.length > 0) {
    // the response data is embedded in the response array
  }
});