这令人抓狂,我如何获得一个环回模型,以便我可以以编程方式使用它?我有一个名为" Notification"的持久模型。我可以使用REST资源管理器与它进行交互。我希望能够在服务器中使用它,即Notification.find(...)。我执行app.models()并可以看到它列出。我这样做了:
var Notification = app.models.Notification;
得到一个大胖子" undefined"。我这样做了:
var Notification = loopback.Notification;
app.model(Notification);
var Notification = app.models.Notification;
和另一个大胖子" undefined"。
请解释我所要做的所有事情,以便掌握我使用的模型:
slc loopback:model
提前致谢
答案 0 :(得分:10)
您可以使用ModelCtor.app.models.OtherModelName
从自定义方法访问其他模型。
/** common/models/product.js **/
module.exports = function(Product) {
Product.createRandomName = function(cb) {
var Randomizer = Product.app.models.Randomizer;
Randomizer.createName(cb);
}
// this will not work as `Product.app` is not set yet
var Randomizer = Product.app.models.Randomizer;
}
/** common/models/randomizer.js **/
module.exports = function(Randomizer) {
Randomizer.createName = function(cb) {
process.nextTick(function() {
cb(null, 'random name');
});
};
}
/** server/model-config.js **/
{
"Product": {
"dataSource": "db"
},
"Randomizer": {
"dataSource": null
}
}
答案 1 :(得分:0)
我知道很久以前这篇文章就在这里。但是,由于最近几天我遇到了同样的问题,这就是我用最新的环回api所知道的:
您可以按照以下方式获取模型附加的应用程序:
ModelX.js
module.exports = function(ModelX) {
//Example of disable the parent 'find' REST api, and creat a remote method called 'findA'
var isStatic = true;
ModelX.disableRemoteMethod('find', isStatic);
ModelX.findA = function (filter, cb) {
//Get the Application object which the model attached to, and we do what ever we want
ModelX.getApp(function(err, app){
if(err) throw err;
//App object returned in the callback
app.models.OtherModel.OtherMethod({}, function(){
if(err) throw err;
//Do whatever you what with the OtherModel.OtherMethod
//This give you the ability to access OtherModel within ModelX.
//...
});
});
}
//Expose the remote method with settings.
ModelX.remoteMethod(
'findA',
{
description: ["Remote method instaed of parent method from the PersistedModel",
"Can help you to impliment your own business logic"],
http:{path: '/finda', verb: 'get'},
accepts: {arg:'filter',
type:'object',
description: 'Filter defining fields, where, include, order, offset, and limit',
http:{source:'query'}},
returns: {type:'array', root:true}
}
);
};

我觉得这里的代码块格式不太好......
此外,你应该注意这个' getApp'被调用,这很重要,因为如果你在初始化模型时很早就调用这种方法,那就像“未定义”这样的方法。会发生错误。