检查骨干提取是否返回空模型的好方法

时间:2015-01-02 23:09:12

标签: node.js backbone.js express

我正在使用node.js / express并且如果服务器上没有数据则返回一个空对象(即:快递端的res.send({}))。

但是,因为我使用的是Backbone myCollection.fetch(....) 我仍然得到一个模型,只是它是空的。

如:

  _getLines: function () {
  var self = this;
      self.m_linesCollection.fetch({
          success: function (data) {
              $(Elements.FASTERQ_CUSTOMER_LINES).empty();
              if (_.size(data.models["0"].attributes) == 0)
                  return;      
            },
            error: function () {
                log('error loading collection data');
            }
        });
    }

正如您所看到的,我正在通过以下方式对客户端进行脏检查:

if(_.size(data.models [“0”]。attributes)== 0)

工作正常...检查是否没有真正的模型回来,但我确信有更好的方法来检查模型是否为空,或从服务器端发送其他东西:/?

看起来很琐碎......我一定错过了什么......

THX,

肖恩。

2 个答案:

答案 0 :(得分:0)

这是一个偏好问题,但最简单的方法是让你的服务器返回一个空数组,而不是一个空对象数组。

答案 1 :(得分:0)

Marionettejs是一个固执己见的Backbone框架。在其中,他们定义了效用函数:

isEmpty: function() {
  return !this.collection || this.collection.length === 0;
},

您只需添加到视图中即可。您可以在初始化中将其定义为this.isEmpty,也可以延伸到视图中

var MyView = Backbone.View.extend({ ... }); 
_.extend( MyView, { isEmpty: function() { ... } });

如果从服务器返回一个空数组,则集合的length属性将等于零,isEmpty功能将返回true

当然,你可以使用

if (this.collection.length == 0) { ... }