Servicio node_egg_service

// Servicio (Service) 
// términos simples, el servicio es una capa de abstracción para hacer la lógica de negocio se encapsula en un complejo escenarios de negocio, proporcionando este resumen tiene las siguientes ventajas: 
  mantener la lógica del controlador de una manera más concisa. 
  Mantener la independencia de la lógica de negocio, resumido servicio puede ser llamado en repetidas ocasiones múltiples controlador. 
  La separación de la lógica y la presentación, más fáciles de casos de prueba de escritura 

// escenarios de uso 
  que se ocupan de datos complejos, tales como información para mostrar la necesidad de obtener de la base de datos, sino también a través de ciertas reglas de cálculo, con el fin de volver a la pantalla del usuario. O después de completar el cálculo, para actualizar la base de datos. 
  Llamar a los servicios de terceros, como el acceso a la información y así sucesivamente GitHub. 

// definición de servicio 
// Aplicación / -Servicio / user.js 
const = requerir el servicio ( 'huevo' ) .Service; 
clase-servicio {UserService la extiende 
  el Buscar asíncrono (UID) { 
    const Usuario = la espera de la presente .ctx.db.query ( 'SELECT donde a partir de usuario UID = * '? , UID);
     el retorno del usuario; 
  }
} 
Module.exports = UserService; 

// cada vez que una petición de usuario, crea una instancia del marco correspondiente instancia de servicio, ya que hereda egg.Service, que tiene las siguientes propiedades para facilitar nuestro desarrollo: 
  la presente .ctx: objetos de contexto la solicitud contexto actual ejemplos, por los que pueden obtener una variedad de convenientes propiedades y métodos de la solicitud actual de bastidor de manipulación de envasado.
  el este del .app: Ejemplos de aplicación del objeto de la aplicación actual, a través de sus objetos y métodos globales proporcionada por el marco que podemos conseguir.
  la presente .Service: Servicio definido por la aplicación, a través del cual podemos tener acceso a otra capa de negocio, es equivalente a la presente .ctx.service.
  la presente .config: la aplicación en tiempo de ejecución de elementos de configuración.
  el este .logger: Objetos Logger, lo anterior cuatro métodos (debug, info, advertir, de error ), que representan cuatro diferentes niveles de registros de impresión, el uso y efectos como se ha descrito en contexto logger 


// Servicio CTX explicar 
  el este . ctx.curl llamada red de origen.
  la presente convocatoria .ctx.service.otherService otro servicio.
  este.ctx.db iniciar llamadas de bases de datos, etc., db puede haber otros módulos plug-in para ser montadas con antelación en la App 


// archivos del servicio debe ser colocado en el directorio app / servicio, el directorio puede soportar múltiples niveles, el tiempo de la visita se puede acceder a través del nombre del directorio en cascada . 

  Aplicación /service/biz/user.js => ctx.service.biz.user 
  aplicación / -Servicio / sync_user.js => ctx.service.syncUser 
  aplicación /service/HackerNews.js => ctx.service.hackerNews
 // un Servicio archivo puede contener sólo una clase que tiene que ser devuelto a modo module.exports. 
// clase de servicio necesita ser definida por cierto, el padre debe ser egg.Service. 
// No Servicio de una sola forma de realización, un objeto es un nivel de solicitud, la instanciación de retardo de trama ctx.service.xx cada primera solicitud de acceso, el Servicio puede ser obtenida por el contexto this.ctx solicitud actual. 


// Uso rizo http://127.0.0.1:7001/user/1234-Service 

// Aplicación / router.js 
module.exports App = => {
  app.router.get ( '/ user /: id' , controller.user.info); 
}; 

// app / controlador / user.js 
const Controller = require ( 'huevo' ) .Controller; 
clase UserController extiende Controller { 
  info asíncrono () { 
    const {ctx} = esta ; 
    const userId = ctx.params.id; 
    const userInfo = await ctx.service.user.find (userId); 
    ctx.body = userInfo; 
  } 
} 
Module.exports = UserController; 

// aplicación / servicio / user.js 
const Servicio = require ( 'huevo' ) .Service; 
UserService clase extiende servicio { 
  // necesidad constructor por defecto no puede proporcionar. 
  // constructor (CTX) { 
  //    Súper (CTX), y si usted tiene que hacer algún tipo de procesamiento en el constructor, debe tener estas palabras, con el fin de garantizar `detrás del uso this.ctx`. 
  //    // this.ctx puede ser adquirido directamente por el CTX 
  //    // this.app también ser adquiridos directamente por la aplicación 
  @ } 
  del asíncrono Find (UID) {
     // Si llegamos a un usuario de la base de datos para obtener el identificador de usuario detalles información 
    const = el usuario del aguardan la presente .ctx.db.query ( 'SELECT * la del usuario el dónde uid =?' , UID);
     // asumen que hay algunos cálculos complejos aquí, y luego devuelven la información requerida. 
    la Await imagen = const la presente .getPicture (UID);
     regreso { 
      nombre: user.user_name, 
      Edad: user.age,
      imagen, 
    }; 
  }
  asíncrono GetPicture (UID) { 
    const resultado = esperan este .ctx.curl ( `http: // Foto Servidor / uid = $ {}` UID, {tipoDatos: 'json'}); 
    volver result.data; 
  } 
} 
Module.exports = UserService;

 

Supongo que te gusta

Origin www.cnblogs.com/JunLan/p/12536282.html
Recomendado
Clasificación