简体   繁体   中英

LoopBack: cannot call method 'post' of undefined

I am new to loopback and node.js.

I have created two models: Rating and RatingsAggregate using the loopback explorer, I can query and post against the API just fine.

I am try to setup some basic business logic so I am editing the file Rating.js in common/models Here is the content of it:

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();
    });

  });

};

I can load my API, but whenever I run a get statement against it, I get this error:

TypeError: Cannot call method 'post' of undefined

My guess is that somehow ratingsaggregate never gets a value... but I don't know what I am doing wrong. Obviously this is not the end state of my business logic, but I am trying some basic CRUD right now between two models

And... here is the answer. There was a getModel function hidden in the documentation

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();
    });

  });

};

Fixes everything and the behaviour is the expected one

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM