Backbone.js - Nuevos registros

Hola Nuevas Criaturas,

Backbone distingue nuevos registros con la propiedad id. En éste seguimiento de Backbone trataremos siempre con el mismo ejemplo de los candidatos, así que, creamos nuestra clase.

var Candidato = Backbone.Model.extend({
    defaults: {
        votos: 0
    }
});

Si en el registro existe un campo id, entonces el registro es nuevo. Veamos un primer ejemplo sin dicho campo:

var candidato = new Candidato({ nombre: 'EPN', partido: 'PRI' });
//  { nombre: 'EPN', partido: 'PRI', votos: 0 }

Backbone cuenta con un forma de validar si el registro es nuevo. Se trata de la funcion isNew. Lo usamos de la siguente manera.

candidato.isNew();
//  Devuelve *true* porque el registro aún no tiene `id`.

Creamos otro candidato pero con un campo id.

var candidato = new Candidato({ id: 1, nombre: 'EPN', partido: 'PRI' });

// Ahora comprobamos
candidato.isNew(); // *false* porque el registro ya tiene un `id` 

Si navegamos hacia el codigo de Backbone hasta la funcion isNew, nos encontraremos que comprueba si existe el campo id en el registro.

// A model is new if it has never been saved to the server, and lacks an id.
    isNew: function() {
      return !this.has(this.idAttribute);
    },

No se preocupen, más adelante hablaremos de ésto, pero se los muestro para que vayamos adaptándonos a las entrañas de su código.

Como podemos observar, distinguimos fácilmente un nuevo registro.
De esta forma, también Backbone internamente puede distinguir si actualizar o guardar el registro. Esto es útil cuando traemos datos por AJAX. Los registros al venir desde el server ya están guardados a nuestra base de datos. Por lógica, todos los registros traerán un campo id.

En ocasiones el id no se llamará como tal. Podríamos darle otro nombre.
En la próxima veremos como cambiar el campo id por el que querramos.

Bendiciones!