Javascript 如何获得Strongloop环回模型?

Javascript 如何获得Strongloop环回模型?,javascript,node.js,loopbackjs,strongloop,Javascript,Node.js,Loopbackjs,Strongloop,这太令人恼火了,我如何获得一个环回模型,以便我能够以编程方式使用它?我有一个名为“通知”的持久化模型。我可以使用REST浏览器与它交互。我希望能够在服务器中使用它,即Notification.find(…)。我执行app.models()并可以看到它的列表。我已经这样做了: var Notification = app.models.Notification; var Notification = loopback.Notification; app.model(Notification);

这太令人恼火了,我如何获得一个环回模型,以便我能够以编程方式使用它?我有一个名为“通知”的持久化模型。我可以使用REST浏览器与它交互。我希望能够在服务器中使用它,即Notification.find(…)。我执行app.models()并可以看到它的列表。我已经这样做了:

var Notification = app.models.Notification;
var Notification = loopback.Notification;
app.model(Notification);
var Notification = app.models.Notification;
然后得到一个大胖子“未定义”。我已经这样做了:

var Notification = app.models.Notification;
var Notification = loopback.Notification;
app.model(Notification);
var Notification = app.models.Notification;
另一个大胖子“未定义”

请解释我所要做的一切,以获得使用以下工具定义的模型:

slc loopback:model

提前感谢

您可以使用
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
  }
}

我知道这个帖子很久以前就在这里了。但由于我最近遇到了同样的问题,下面是我通过最新的环回api得出的结论:

  • 环回2.19.0(最新版本为7月12日)
  • API,获取模型附加到的应用程序对象:
您可以按以下方式获取模型所附加的应用程序:

ModelX.js

module.exports=函数(ModelX){
//禁用父“find”RESTAPI并创建名为“findA”的远程方法的示例
var=true;
ModelX.disableRemoteMethod('find',isStatic);
ModelX.findA=函数(过滤器,cb){
//获取模型所附加的应用程序对象,然后我们可以做任何我们想做的事情
ModelX.getApp(函数(err,app){
如果(错误)抛出错误;
//回调中返回的应用程序对象
app.models.OtherModel.OtherMethod({},function(){
如果(错误)抛出错误;
//用OtherModel.OtherMethod做任何你想做的事情
//这使您能够访问ModelX中的其他模型。
//...
});
});
}
//使用设置公开远程方法。
ModelX.remoteMethod(
“芬达”,
{
description:[“从PersistedModel安装父方法的远程方法”,
“可以帮助您实现自己的业务逻辑”],
http:{path:'/finda',动词'get'},
接受:{arg:'filter',
类型:'object',
description:'过滤器定义字段,其中,include,order,offset和limit',
http:{source:'query'}},
返回:{type:'array',root:true}
}
);

};查看可能对某些人有用:若您在“初始化”模型之前访问它,它将给出未定义的。只需尝试从服务器/引导中放置的脚本访问模型。这里有一个很好的例子:如果您的代码中没有另一个模型构造函数,但您确实有一个模型实例,该怎么办?@JBCP您可以通过
constructor
属性(通常)获得构造函数。例如“productInstance.constructor.app.models.Randomizer”。谢谢。如果我有一个模型实例,只做app.models.OtherModel是否安全,因为我知道应用程序现在已经初始化了?这就是我到目前为止一直在做的事情。@JBCP很可能(99%)是的。