Невозможно получить idAttribute для работы в магистрали

У меня есть коллекция, которая определяет модель, которая сама имеет набор idAttribute, так как мой бэкэнд использует настраиваемое поле для первичного ключа. Код выглядит так:

var SearchItemModel = Backbone.Model.extend({
 idAttribute: 'searchDefId'
});

var savedSearchesCollection = new SavedSearchesCollection({
 model: SearchItemModel
});

Я понимаю, что должен найти модель, выполнив that.collection.get(searchDefIdValue), но не могу. Ниже вы можете видеть, что моя коллекция имеет две модели. Если я попытаюсь получить модель на основе базового cid "c44", то это не вызовет проблем. Но если я попытаюсь выполнить поиск по пользовательскому полю id 'searchDefId', он не сможет его найти. Я думал, что Backbone должен был скопировать значение idAttribute в id, но я не вижу никакого поля "id".

Также обратите внимание, что я могу найти модель, используя that.collection.where({ searchDefId: data.searchDefId})[0] но похоже, что это может быть дороже.

1 ответ

Я думаю, проблема заключается в том, что вы передаете options качестве первого аргумента SavedSearchesCollection когда Backbone.Collection ожидает, что это models. Это также подтверждается отсутствием свойства model на that.collection.

Пытаться

var savedSearchesCollection = new SavedSearchesCollection([], {
 model: SearchItemModel
});

licensed under cc by-sa 3.0 with attribution.