【问题标题】:How to access data of another persisted model of loopback from remote method of one persisted model?如何从一个持久模型的远程方法访问另一个持久环回模型的数据?
【发布时间】:2017-07-03 00:42:59
【问题描述】:

'use strict';
module.exports = function (City) {
City.GetCurrentPopulation = function (req) {
var population;
City.app.models.Pupulation.find({where{id:req.id}}, //This line //gives me an error that cannot read property 'find' of undefined 
function(req.res){
population=res.population;
});
response='Population for ' +req.cname ' is' +population;
req(null, response);
};
City.remoteMethod(
    'GetCurrentPopulation', {
      http: {
        path: '/GetCurrentPopulation',
        verb: 'GetCurrentPopulation'
      },
      returns: {
        arg: 'startdate',
        type: 'string'
      }
    }
  );

有一个模型城市,我想访问另一个模型,例如“population.find(一些过滤器)”如何做到这一点?

我有一个用城市模型编写的远程方法。我试图在哪里访问人口记录

var countryp=population.find(where{id:4});

var currentpopulation=countryp.Totalpopulation;

它给出了一个错误population.find不是一个函数。

请建议这样做的方法。

【问题讨论】:

  • 您的问题与 Loopback.js 有关吗?请确保您的问题有正确的标签集。另外,请添加有关您正在使用的环境和/或所涉及的库的信息,否则很难猜出问题是关于什么的。
  • 是的,它与 loopback.js 有关,我正在尝试从现有的 postgresql 数据源创建 API。
  • 你能发布你的代码吗?
  • 是的,添加了与我的完全相同的代码 sn-p。已经省略了我原来的业务逻辑以避免代码混乱。

标签: loopbackjs strongloop loopback


【解决方案1】:

City.app.models.Population 只有在您定义了 City & Population 模型之间的某种关系时才能工作。否则它不会那样工作。如果与其他模型没有关系。您需要使用

获取对应用程序对象的引用

试试这样:

var app = require('../../server/server');
module.exports = function (City) {

var Population = app.models.Population;
City.GetCurrentPopulation = function(req) {
     Population.find({where{id:req.id}}, function (err) {
    if (err) {
        return console.log(err);
    } else {
        // do something here 
    });
}

您可以参考这里的文档https://loopback.io/doc/en/lb3/Working-with-LoopBack-objects.html#using-model-objects

【讨论】:

  • 谢谢。 var app = require('../../server/server');丢失并造成问题。
  • 您好,以类似的方式为一种方法添加了远程挂钩。我正在尝试访问一个模型并在那里插入一条记录。以上述方式添加了对该模型的引用。 var app = require('../../server/server');和 var Population = app.models.Population;内部导出功能。在“Population.upsert()”上,它说无法读取未定义的 upsert。
  • 尝试添加 var Population = app.models.Population;像这样的函数里面的语句 City.GetCurrentPopulation = function(req) { var Population = app.models.Population; }
  • 谢谢你,它对我有用,你能再帮我解决一个问题吗?这是链接stackoverflow.com/questions/42621993/…
  • @Dyo 我面临着同样的问题,我想从一个模块访问另一个模块,但出现错误。我想在持久化模型中获取文件名是否可以获取文件名
猜你喜欢
  • 1970-01-01
  • 2018-06-11
  • 1970-01-01
  • 1970-01-01
  • 2012-03-03
  • 2015-09-24
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
相关资源
最近更新 更多