Modèles de bouclage dans ES6

Je suis nouveau sur loopback.js. Je souhaite utiliser la syntaxe ES6 pour les classes.

Comment y parvenir en utilisant la façon dont les modèles sont définis par le bouclage?

module.exports = function(MyModel) { MyModel.on('dataSourceAttached', function(obj){ var find = MyModel.find; MyModel.find = function(filter, cb) { return find.apply(this, arguments); }; }); }; 

Quelques idées de https://github.com/NextFaze/Loopback-Style-Guide#custom-model-methods Je crée une classe de démarrage dans ES6 pour les modèles de gestion. Je crée 2 exemples dans ES5 et ES6.

Exemple de modèle ES5

 module.exports = function(Sbif) { var request = require('request-promise'), token = process.env.SBIF_TOKEN_URL, api_url = process.env.SBIF_API_URL; // UTM --------------------------------------------- Sbif.utm = function(params, cb) { makeRequest('utm',{}).then(function(res) { cb(null, JSON.parse(res).UTMs[0]); }); }; Sbif.remoteMethod('utm',{ accepts: {arg: 'params', type: 'ssortingng'}, returns: {arg: 'utm', type: 'ssortingng'}, http: {path: '/utm', verb: 'get' } }); // IPC --------------------------------------------- Sbif.ipc = function(params, cb) { makeRequest('ipc', {}).then(function(res) { cb(null, JSON.parse(res).IPCs[0]); }); }; Sbif.remoteMethod('ipc', { accepts: {arg: 'params', type: 'ssortingng'}, returns: {arg: 'ipc', type: 'ssortingng'}, http: {path: '/ipc'} }); // EURO -------------------------------------------- Sbif.euro = function(params, cb) { makeRequest('euro', {}).then(function(res) { cb(null, JSON.parse(res).Euros[0]); }); }; Sbif.remoteMethod('euro', { accepts: {arg: 'params', type: 'ssortingng'}, returns: {arg: 'euro', type: 'ssortingng'}, http: {path: '/euro'} }); // Dolár ------------------------------------------- Sbif.dolar = function(params, cb) { makeRequest('dolar',{}).then(function(res) { cb(null,JSON.parse(res).Dolares[0]); }); }; Sbif.remoteMethod('dolar', { accepts: {arg: 'params', type: 'ssortingng'}, returns: {arg: 'dolar', type: 'ssortingng'}, http: {path: '/dolar'} }); // UF ---------------------------------------------- Sbif.uf = function(params, cb) { makeRequest('uf',{}).then(function(res) { cb(null, JSON.parse(res).UFs[0]); }); }; Sbif.remoteMethod( 'uf',{ accepts: {arg: 'params', type: 'ssortingng'}, returns: {arg: 'uf', type: 'ssortingng'}, http: {path: '/uf', verb: 'get' } }); // SBIF Token and URL function makeRequest(indicador, parametros){ return request(buildUrl(indicador, parametros)); } function buildUrl(indicador, parametros){ var url = api_url + indicador; if(parametros.length > 0){ parametros.forEach((parametros) { url += '/' + parametros; }); } return url + "?apikey=" + token + "&formato=json"; } }; 

Exemple de modèle ES6

 import request from 'request-promise'; var token = process.env.SBIF_TOKEN_URL, api_url = process.env.SBIF_API_URL; class SbifApi{ constructor(SbifModel){ //map remote methods to class methods. Set an extra this using the .bind function SbifModel.uf = this.getData.bind(SbifModel, 'uf'); SbifModel.utm = this.getData.bind(SbifModel, 'utm'); SbifModel.ipc = this.getData.bind(SbifModel, 'ipc'); SbifModel.dolar = this.getData.bind(SbifModel, 'dolar'); SbifModel.euro = this.getData.bind(SbifModel, 'euro'); //Set remotes this.setRemotes(SbifModel, {name: 'uf', path: '/uf', root: 'uf'}); this.setRemotes(SbifModel, {name: 'utm', path: '/utm', root: 'utm'}); this.setRemotes(SbifModel, {name: 'ipc', path: '/ipc', root: 'ipc'}); this.setRemotes(SbifModel, {name: 'dolar', path: '/dolar', root: 'dolar'}); this.setRemotes(SbifModel, {name: 'euro', path: '/euro', root: 'euro'}); return SbifModel; } setRemotes(model, remoteMethod){ let remoteOpts = { accepts: { arg: 'params', type: 'ssortingng' }, returns: { arg: remoteMethod.root || remoteMethod.name, type: 'ssortingng' }, http: { path: remoteMethod.path || '/' + remoteMethod.name, verb: 'get' } }; //Set the model remote methodnpm model.remoteMethod(remoteMethod.name, remoteOpts); } getData(type, params, callback){ request(`${api_url}/${type}?apikey=${token}&formato=json`).then((res) => { let data = JSON.parse(res); switch(type){ case 'uf': data = data.UFs[0]; break; case 'utm': data = data.UTMs[0]; break; case 'ipc': data = data.IPCs[0]; break; case 'dolar': data = data.Dolares[0]; break; case 'euro': data = data.Euros[0]; break; } callback(null, data); }); } } export default function(Model) { new SbifApi(Model); }