ES6中的环回模型
Loopback models in ES6
我是loop .js的新手。我想对类使用ES6语法。
如何使用环回定义模型的方式实现这一点?
module.exports = function(MyModel) {
MyModel.on('dataSourceAttached', function(obj){
var find = MyModel.find;
MyModel.find = function(filter, cb) {
return find.apply(this, arguments);
};
});
};
https://github.com/NextFaze/Loopback-Style-Guide#custom-model-methods的一些想法我在ES6中为管理模型创建了一个bootstrapping类。我在ES5和ES6中创建了2个示例。
模型示例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: 'string'},
returns: {arg: 'utm', type: 'string'},
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: 'string'},
returns: {arg: 'ipc', type: 'string'},
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: 'string'},
returns: {arg: 'euro', type: 'string'},
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: 'string'},
returns: {arg: 'dolar', type: 'string'},
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: 'string'},
returns: {arg: 'uf', type: 'string'},
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";
}
};
模型示例
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: 'string'
},
returns: {
arg: remoteMethod.root || remoteMethod.name,
type: 'string'
},
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); }
相关文章:
- 在VanillaJS中模拟模型双向数据绑定
- ES6构造函数返回基类的实例
- 如何在下面的ES6循环中获得前面的文本
- es6 相当于下划线查找位置
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 如何在Javascript/ES6中的Aurelia浏览器应用程序中使用AWS S3
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 将不在模型中的数据返回到mvc控制器
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 我应该如何检查主干.主干.模型更改时查看
- Ext.js从json构建模型关系的问题
- ES6 中的主干模型和集合未正确构造
- 如何在ES6/ES2015中编写Mongoose模型
- 在es6中编写书架模型
- ES6中的环回模型
- ES6 节点.js/快速.js模型对象的唯一主键