2015-01-02 3 views
0

Я использую 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'); 
      } 
     }); 
    } 

, как вы можете видеть, что я делаю грязную проверку на стороне клиента с помощью:.

если (_.size (data.models [ "0"] атрибутов) == 0)

который отлично работает ... чтобы проверить, не вернулись ли реальные модели, но я уверен, что есть лучший способ проверить, пуста ли модель, или отправить что-то еще со стороны сервера: /?

Просто так кажется тривиальным ... Я должен что-то отсутствует ...

ТНХ,

Шон.

+4

Почему вы возвращающимся пустые объекты? Кажется, что ваш back-end должен просто вернуть пустой массив, а не массив пустых объектов. –

+0

хороший вызов, изменен на массив и исправлен ... TX !!! – born2net

+0

Awesome. Я добавил ответ, чтобы мы могли закрыть этот вопрос. –

ответ

0

Это вопрос предпочтения, но самый простой способ заключается в том, чтобы ваш сервер возвращал пустой массив вместо массива пустых объектов.

0

Marionettejs - это самоуверенный каркас. В нем они определяют полезную функцию:

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

который вы можете добавить в свой собственный. Вы можете определить его в Initialize, а this.isEmpty, или путем расширения в вашей точки зрения

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

Если возвращать пустой массив с вашего сервера, длина свойство вашей коллекции будет равна нулю, и ваш isEmpty Funtion вернется true ,

Конечно, вы могли бы просто использовать

if (this.collection.length == 0) { ... } 
Смежные вопросы