2017-02-14 8 views
2

1つの永続モデルのリモートメソッドからループバックの別の永続化モデルのデータにアクセスする方法はありますか?

'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;

エラーが発生します.findは関数ではありません。

これを行う方法を提案してください。

+0

を参照することができLoopback.jsに関連した質問ですか?あなたの質問に適切なタグが設定されていることを確認してください。また、使用している環境や関係するライブラリに関する情報を追加してください。それ以外の場合は、その質問の内容を推測することは困難です。 –

+0

はい、私は既存のpostgresqlデータソースからAPIを作成しようとしていますが、loopback.jsに関連しています。 –

+0

あなたのコードを投稿できますか? – Dyo

答えて

3

City.app.models.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

+0

ありがとう。 var app = require( '../../ server/server');行方不明で問題が生じていた。 –

+0

こんにちは、同様の方法で1つのメソッドのリモートフックを追加しました。そこに私は1つのモデルにアクセスしてそこにレコードを挿入しようとしています。上記の方法でそのモデルへの参照を追加しました。 var app = require( '../../ server/server');およびvar Population = app.models.Population;内部のエクスポート機能。 "Population.upsert()"では、未定義のupsertを読み取ることはできません。 –

+0

var Population = app.models.Populationを追加してみてください。このような関数内のステートメント City.GetCurrentPopulation = function(req){ var Population = app.models.Population; } – Dyo

関連する問題