Подтвердить что ты не робот

Backbone.js - id vs idAttribute vs cid

Я изучаю Backbone.js в течение нескольких недель, и я чувствую себя комфортно, используя представления с моделями, маршрутизаторами и коллекциями.

У меня все еще есть большие пробелы:

  • Какова связь между id, cid и idAttribute? Как они влияют друг на друга?

  • Когда именно новая модель получает свой идентификатор? Является ли сервер ответственным за его назначение? Нужно ли добавить его в defaults модели (возможно, как функцию)? Может быть, функция addNewModel должна это сделать?

4b9b3361

Ответ 1

Какова связь между id, cid и idAttribute? Как они влияют друг на друга?

Оба cid и id должны быть уникальным идентификатором для модели и могут для извлечь модель из коллекции.

Разница между ними заключается в том, что cid назначается клиентской стороной backbone.js и полезна, если у вас нет фактического id, потому что модель еще не была сохранена на сервере или, возможно, вы даже не сохраняете его в db (возможно, вы используете localStorage). Атрибут id должен быть идентификатором модели, которая поступает с вашего сервера (это то, что id находится в вашем db). idAttribute указывает, что "поле", которое приходит с вашего сервера, оно должно использовать для обновления атрибута id, по умолчанию оно установлено как "id", но, как говорится в документации , если ваш сервер использует что-то еще, вы можете установить его на это (приведенный пример устанавливает его в "_id".

Когда именно новая модель получает свой идентификатор? Является ли сервер ответственным за его назначение? Нужно ли добавить его в defaults модели (возможно, как функцию)? Может быть, функция addNewModel должна это сделать?

Они должны получить новый идентификатор при сохранении на сервере, и вам не нужно будет устанавливать его вручную (на основе idAttribute), если вам не нужно больше контроль над процессом.

Ответ 2

id - id, который может быть установлен вручную при создании модели или заполняется, когда модель была сохранена на сервере (см. "idAttribute" внизу, чтобы увидеть соединение). Это идентификатор, отправленный на сервер, когда модель загружена или обновлена ​​с сервера, например, для модели Person этот вызов будет выполнен, если id равен 123, "/person/123"

cid - уникальный идентификатор, устанавливающий мою основную модель для внутреннего использования

idAttribute - это определяет, какое свойство будет действовать как уникальный идентификатор (по умолчанию это "id" ), когда модель была сохранена на сервере, например, уникальный ключ модели на сервере может быть определен "personId", поэтому, когда fetch называется модель будет отображать ответ сервера от "personId" на id в базовой модели.

Ответ 3

id - идентификатор модели сервера, cid - идентификатор клиента.

  • модель сервера: например, модель Rails
  • модель клиента: базовая модель

Ответ 4

Свойство id на модели автоматически назначается на основе id, заданного в хэшах атрибутов моделей. В идеале это ID, который вы получаете от остального API для ресурса, который вы запрашиваете. С другой стороны, cid - это идентификатор, временно назначенный каждой модели и полезный до тех пор, пока для объекта не будет определен фактический ID. Например, модель, перенесенная в коллекцию, которая еще не была сохранена, может быть решена с помощью cid, пока она не будет сохранена в базе данных, и для нее будет создан фактический идентификатор.