0

私は loopback と node.js が初めてです。

ループバック エクスプローラーを使用して、Rating と RatingsAggregate の 2 つのモデルを作成しました。API に対して問題なくクエリを実行し、投稿できます。

私はいくつかの基本的なビジネス ロジックをセットアップしようとしているので、common/models のファイル Rating.js を編集しています。その内容は次のとおりです。

module.exports = function(Rating) {


Rating.afterRemote('**', function(ctx, inst, next) {


    var loopback = require('loopback');
    var app = loopback();
    var ratingsaggregate = app.models.ratingsaggregate;

    ratingsaggregate.post({"source":"foobar","restaurantID":"foobar","itemMenuName":"foobar","itemSectionName":"foobar","itemName":"foobar","nRatings1":123,"nRatings2":123,"nRatings3":123,"nRatings4":123,"nRatings5":123,"hasImage":true,"imageSize":123,"latestImageRatingID":"foobar","imageCount":123,"lastUpdated":"foobar"}, function(err, response) {
        if (err) console.error(err);
        next();
    });

  });

};

API をロードできますが、API に対して get ステートメントを実行すると、次のエラーが発生します。

TypeError: Cannot call method 'post' of undefined

私の推測では、何らかの方法で ratingaggregate が値を取得することはありません...しかし、何が間違っているのかわかりません。明らかに、これは私のビジネス ロジックの最終状態ではありませんが、現在、2 つのモデル間でいくつかの基本的な CRUD を試しています。

4

1 に答える 1

3

そして... これが答えです。ドキュメントに getModel 関数が隠されていました

module.exports = function(Rating) {


Rating.afterRemote('create', function(ctx, inst, next) {


    var loopback = require('loopback');
    var ratingsaggregate = loopback.getModel('ratingsaggregate');

    ratingsaggregate.create({"source":"foobar","restaurantID":"foobar","itemMenuName":"foobar","itemSectionName":"foobar","itemName":"foobar","nRatings1":123,"nRatings2":123,"nRatings3":123,"nRatings4":123,"nRatings5":123,"hasImage":true,"imageSize":123,"latestImageRatingID":"foobar","imageCount":123,"lastUpdated":"foobar"}, function(err, response) {
        if (err) console.error(err);
        next();
    });

  });

};

すべてを修正し、動作は期待どおりです

于 2014-09-15T03:34:20.413 に答える