Ошибка при извлечении моделей из базовых коллекций при наличии idAttribute = '_id'

У меня есть пользователь модели, настроенный так:

 User = Backbone.Model.extend({
      urlRoot: '/users',

      defaults: {
        id: '',
        username: '',
        password: ''
      },

      idAttribute: '_id',

      initialize: function () {
        console.log('User initiated');
      }

    });

И коллекция должна быть такой:

var Users = Backbone.Collection.extend({

    url: "/users",

    model: User,

  });

  Users = new Users();

Затем, когда я пытаюсь получить модели в своем представлении, используя Users.fetch(), я получаю только один результат в массиве «коллекция», независимо от того, сколько результатов у меня есть на бэкэнде.

Однако после удаления idAttribute: '_id' из Model User я получаю точное количество результатов в качестве бэкэнда.

Кто-нибудь знает, почему это происходит?

p.s. Когда я вошел в консоль, кажется, что Users.fetch() запускалась столько же раз, сколько у меня есть пользователей (каждый раз, когда коллекция обратного вызова содержит только 1 модель). Таким образом, последний вызов переопределяет все предыдущие и показывает только последний результат.

Но я до сих пор понятия не имею, что происходит на самом деле.


person benjaminz    schedule 11.05.2015    source источник


Ответы (1)


Обычно это происходит, когда ваш атрибут id не определен для всех моделей или имеет одинаковое значение. Убедитесь, что значение _id определено и отличается в ответе.

ИЗМЕНИТЬ:

Вы уверены, что не пытаетесь сослаться на id без подчеркивания? В этом случае вы можете не указывать свойство idAttribute, так как id является значением по умолчанию.

person Ryan Lynch    schedule 11.05.2015
comment
Я понял, что поместил idAttribute: '_id' не в то место, он должен быть в квадратных скобках по умолчанию для определения модели. Спасибо хоть! - person benjaminz; 11.05.2015