Loopbackjs 继承模型的远程方法未显示在环回资源管理器中
我继承了这样一个环回模型-Loopbackjs 继承模型的远程方法未显示在环回资源管理器中,loopbackjs,strongloop,Loopbackjs,Strongloop,我继承了这样一个环回模型- { "name": "MyModel", "base": "AnotherModel", "idInjection": false, "properties": { "value": { "type": "String" }, "display": { "type": "String" } }, "validations": [],
{
"name": "MyModel",
"base": "AnotherModel",
"idInjection": false,
"properties": {
"value": {
"type": "String"
},
"display": {
"type": "String"
}
},
"validations": [],
"relations": {},
"acls": [],
"methods": []
}
而我能够从我的
MyModel.js
文件中调用AnotherModel
的所有远程方法。但是,AnotherModel
的远程方法没有显示在我的浏览器上。如何让继承模型的所有远程方法显示在资源管理器中?发生这种情况的原因是,当您调用AnotherModel.remoteMethod
时,它只为该模型注册了远程方法,而不注册基于此的模型。要为基于AnotherModel的所有模型调用它,可以执行以下操作:
var originalSetup=AnotherModel.setup;
AnotherModel.setup=function(){//每次调用时都会调用此函数
//该模型是对该模型的扩展。
应用(这个,参数);//如果您的
//AnotherModel基于另一个模型,如PersistedModel。
this.remoteMethod('yourMethod'{
..
});
};
我从中了解到这一点,并检查了persistedModel如何在所有基于它的模型中都具有它的远程方法
还要确保基础模型是公共的。您应该使用setup()
来“公开”AnotherModels的函数。
然后在“设置”部分添加远程方法,如下所述:
以下是示例:(它也可以应用于静态函数)
//AnotherModel.js
module.exports=函数(AnotherModel){
...
//假设有两个函数要继承“function1”和“function2”
AnotherModel.prototype.function1=函数(){…}
AnotherModel.function2=函数(){…}
//函数的作用是调用setup()
//因此,放入setup()中的代码将自动获得
//在创建模型时执行。
var originalSetup=anotheroldel.setup;
Anotheroldel.setup=函数(){
//调用原始设置!
应用(这个,参数);
//“此”将在MyModel设置期间指向MyModel
//第一个参数应与函数名匹配
此.remoteMethod('function1'{
接受:{…},
返回:{…},
http:{…});
此.remoteMethod('function2'{
接受:{…},
返回:{…},
http:{…});
}
}
它将显示在API资源管理器中
我希望这能有所帮助,如果你找到其他解决方案,请告诉我!(由于该职位已有一年多的历史)
干杯