user2038460
user2038460

Reputation:

strongloop creating related model object in afterRemote method

say i have a game scenario.

a game belongs to a user.

game.json:

{
  "name": "game",
  "base": "PersistedModel",
  "idInjection": true,
  "properties": {
    "beer_points_required": {
      "type": "number",
      "required": true
    },
    "total_points": {
      "type": "number",
      "required": true
    }
  },
  "validations": [],
  "relations": {
    "game_blngs_to_user": {
      "type": "belongsTo",
      "model": "user",
      "foreignKey": ""
    }
  },
  "acls": [],
  "methods": []
}

user.json:

{
  "name": "user",
  "base": "User",
  "idInjection": true,
  "properties": {
    "last_game": {
      "type": "date",
      "required": false
    },
    "name": {
      "type": "string",
      "required": true
    }
  },
  "validations": [],
  "relations": {},
  "acls": [
    {
      "accessType": "READ",
      "principalType": "ROLE",
      "principalId": "$everyone",
      "permission": "ALLOW"
    }
  ],
  "methods": []
}

I'm attempting to create a game object for a user programmatically after the user has been created through CRUD, so inside the user.js i have:

var config = require('../../server/config.json');
var path = require('path');
var app = require('../app');

module.exports = function(user) {

user.afterRemote('create', function(context, user) {
    console.log('> user.afterRemote triggered');

  //create a game for each user thats created
  var Game = app.models.game;
  game.create({game_blngs_to_userId: user.id, beer_points_required: 0, total_points: 0},function(err, res){
 if(err){
      console.log('\n\n>>err');
      console.log(err);
      next(err);
      return;
    }
    console.log(res);
  });
});

However, this obviously didn't work lol so I'm wondering how to actually accomplish my goal. I've been staring at strong loops docs for a long time and it seems like actual usage of their api is not that well documented...well at least in my eyes. could anyone please shed some light on this for me?

Upvotes: 2

Views: 683

Answers (2)

IvanZh
IvanZh

Reputation: 2290

Perhaps, you're missing 3rd parameter - next function in afterRemote callback.

user.afterRemote('create', function(context, user, next) {
  ...
  var Game = app.models.game;
  game.create({game_blngs_to_userId: user.id, beer_points_required: 0, total_points: 0},function(err, res){
 if(err){
      console.log(err);
      next(err);
      return;
    }
    next() // countinue execution
  });
}); 

Upvotes: 3

AndreF
AndreF

Reputation: 36

i think your user reference is undefined...try:

app.models.user.afterRemote

Upvotes: 0

Related Questions