Uso apropiado de BIND PARA ELASTICSEARCH CALLBACK -- javascript campo con node.js campo con promise camp codereview Relacionados El problema

Appropriate use of bind for elasticsearch callback


1
vote

problema

Español

Estoy empezando un nuevo proyecto con nodo. Estoy aprendiendo el modelo de objeto, y el código a continuación es mi primer módulo. Una de las cosas me lanzó fue el comportamiento de groupedBy7 dentro de la devolución de llamada por existe. ¿Mi uso de groupedBy8 correcto? ¿Hay alguna manera de escribir esto sin necesidad de groupedBy9 ? Se siente que puede ser un poco de solución para algo que he estructurado incorrectamente.

MI PROYECTO

  [50, 0...]0  
Original en ingles

I'm starting a new project with Node. I'm learning the object model, and the code below is my first module. One of the things threw me was the behavior of this inside the callback for exists. Is my usage of bind correct? Is there a way to write this without needing the bind? It feels like it may be a bit of a workaround for something I've structured incorrectly.

My project

var es = require('elasticsearch');  function NetFlowStorage() {     this.host = 'localhost:9200';     this.shards = '4';     this.replicas = '0';     this.index_name = 'flow_track2';     this.client = null;  }  // setup our index NetFlowStorage.prototype.createIndex = function createIndex() {      this.connect();      this.client.indices.exists({         index: 'flow_track2'      }, function(error, exists) {          if (exists === true) {             console.log('index already exists, not creating again');         } else {             console.log('creating index');              this.client.indices.create({                 index: 'flow_track2',                 body: {                     index: {                         number_of_shards: this.shards,                         number_of_replicas: this.replicas                     }                 }             }, function(error, response, status) {                 if (error) {                     console.log(error + ' ' + status + ' ' + response);                     process.exit(1);                 }              });         }     }.bind(this)); };   // Store the actual flow NetFlowStorage.prototype.storeFlow = function storeFlow(flow) {     flow.timestamp = Date.now();      this.connect();      this.client.index({         index: 'flow_track2',         type: 'raw_flow',         body: {             ipv4_src_addr: flow.ipv4_src_addr,             ipv4_dst_addr: flow.ipv4_dst_addr,             ipv4_next_hop: flow.ipv4_next_hop,             input_snmp: flow.input_snmp,             output_snmp: flow.output_snmp,             in_pkts: flow.in_pkts,             in_bytes: flow.in_bytes,             first_switched: flow.first_switched,             last_switched: flow.last_switched,             ipv4_src_port: flow.ipv4_src_port,             ipv4_dst_port: flow.ipv4_dst_port,             tcp_flags: flow.tcp_flags,             protocol: flow.protocol,             src_tos: flow.src_tos,             in_as: flow.in_as,             out_as: flow.out_as,             src_mask: flow.src_mask,             dst_mask: flow.dst_mask,             timestamp: flow.timestamp         }     }); };   NetFlowStorage.prototype.connect = function connect() {      if (this.client === null) {          this.client = new es.Client({             host: this.host         });     }     return this.client; };  module.exports = NetFlowStorage; 
        

Lista de respuestas


Relacionados problema

1  ¿Es esta una manera razonable de implementar promesas en Node.js?  ( Is this a reasonable way to implement promises in node js ) 
Estoy usando Passport to Setup Iniciar sesión en un sitio Express. El sitio es solo un parque infantil para que aprendas. El código interior de inicio de sesi...

6  Unidad probando un evento de clic con contenido asíncrono  ( Unit testing a click event with asynchronous content ) 
Estoy escribiendo pruebas de unidad para una aplicación web que tiene muchas interacciones de UI. Me gustaría algún comentario sobre cómo manejar, haga clic e...

2  Bucle de reproducción de video usando la promesa de encadenamiento y resolución  ( Video playback loop using promise chaining and settimeout ) 
Bueno, esto podría parecer redundante, dado el tema de los numerosos temas sobre la interacción entre las promesas y la decepción, pero no puedo encontrar una...

1  Función del generador para enumerar archivos  ( Generator function to enumerate files ) 
Quiero implementar una función que enumera todos los archivos en el directorio. Creo que la función debe devuelve una promesa , porque se prefiere la llam...

6  Múltiples promesas jquery  ( Multiple jquery promises ) 
Estoy empezando a reutilizar este patrón, y se preguntaba si había una forma más sucinta / clara de escribirlo. Dada una función namespace SurveyMonkeyPlay...

9  Resultados de promesa de almacenamiento en caché / de memorización  ( Caching memoizing promise results ) 
Me pregunto cuál podría ser el mejor enfoque. Un enfoque es en cadena cachedPromise y "regular", por lo tanto, si 9988777665544335 falla, llamamos a un ...

3  JavaScript que elimina todo dentro de una carpeta en box.com  ( Javascript that deletes everything inside a folder on box com ) 
Acabo de terminar un script simple para el nodo que eliminará todas las carpetas y archivos dentro de un ID de carpeta específico a través de la API del cuadr...

12  Promesa: Entidades similares a la promesa de diseño de objetivos de diseño  ( Pledge promise like entities design goals experiment ) 
Fondo Estaba escribiendo una implementación de promesas / A +, solo por diversión. A mitad de camino, decidí que no era tan divertido después de todo, así q...

1  Reintentar una solicitud utilizando la biblioteca 'Solicitud' sin módulos adicionales  ( Retrying a request using request library without extra modules ) 
Estoy usando el Solicitud Módulo y quería implementar algunos reintentos por robustez. Parece excesivo usar un módulo completamente nuevo o adicional solo p...

22  Inicializador Simple Async Google Maps con angularjs  ( Simple async google maps initializer with angularjs ) 
Aquí está un simple reutilizable 9988776655544337 factory Me acompañé para inicializar los mapas de Google de forma asíncrona, lo que de alguna manera no ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos