Skip to content
Chelo Quilón edited this page Nov 10, 2017 · 5 revisions

¿Qué es Modelator?

Es una librería que, mediante la definición de un esquema, montará la base de datos que lo soporte, y además también montará los endpoints correspondientes, habilitando por lo tanto un API REST.

¿Qué es un esquema?

Simplemente es la defición de los datos que va a guardar el esquema, por ejemplo, tres tipo texto, un select y dos checkbox, cada uno con sus correspondientes identificadores.

Cada esquema tiene un identificador, al igual que cada campo dentro del esquema. Veamos un ejemplo de un esquema con un sencillo campo texto:

const myModelControl = module.exports = new Modelator({
  id: "minimalModel",                   // Identificador del esquema
  limit : 5,                            // default page size limit on LIST endpoints
  languages : ['en','es'],              // support languages if i18n (internationalization)
  schema : [                            // Definición del esquema
    new Text({                          // Campo texto
      id:'idText',                      // Identificador
      i18n : true,                      // Habilitación de la internacionalización para este campo
      keys : {                          // Permisos para este campo
        get : ["owner", "guest"],       // Lo podrá leer owner y guest
        update : ["owner", "guest"],    // Lo podrá actualizar owner y guest
        insert : [],                    // Cualquiera podrá insertar
        remove : []                     // Cualquiera podrá eliminar
      },
      on : {                            // Además, para cada acción sobre un campo, en este ejemplo, 
                                        // update, se pueden especificar acciones adicionales que queremos que se ejecuten.
        update : [
          function avoidAs(context, done){
            if(context.result.indexOf('A')>=0){
              done("A no is possible");
            } else {
              done();
            }         
          },
          function avoidBs(context, done){
            if(context.result.indexOf('B')>=0){
              done("B no is possible");
            } else {
              done();
            }         
          }
        ]
      }
    })
  ]
});
Clone this wiki locally