Как я могу получить модель петли Strongloop?

Это безумие, как мне получить модель петли, чтобы я мог программно работать с ней? У меня есть модель Persisted с названием "Уведомление". Я могу взаимодействовать с ним, используя REST explorer. Я хочу иметь возможность работать с ним внутри сервера, т.е. 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

Заранее спасибо

Ответ 1

Вы можете использовать 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
  }
}

Ответ 2

Я знаю, что этот пост был здесь давным-давно. Но так как я получил тот же вопрос в последние дни, вот то, что я выяснил с последним loopback 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}
		}
	);
};