forest-express-sequelize icon indicating copy to clipboard operation
forest-express-sequelize copied to clipboard

Pie chart shows an error : "Forest cannot render this chart."

Open manurana opened this issue 7 years ago • 3 comments

Expected behavior

Pie Chart should display

Actual behavior

An error is shown

Failure Logs

[forest] 🌳🌳🌳  Unexpected error: Cannot read property 'fields' of undefined
TypeError: Cannot read property 'fields' of undefined
    at new PieStatGetter (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express-sequelize/services/pie-stat-getter.js:28:43)
    at create (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/routes/stats.js:18:19)
    at Layer.handle [as handle_request] (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/layer.js:95:5)
    at next (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/route.js:137:13)
    at exports.ensureAuthenticated (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/services/auth.js:6:5)
    at Layer.handle [as handle_request] (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/layer.js:95:5)
    at next (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/layer.js:95:5)
    at /Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/index.js:335:12)
    at next (/Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express/lib/router/index.js:275:10)
    at /Users/manu/developer/@escorts/escorts-admin/node_modules/forest-express/node_modules/express-jwt/lib/index.js:128:7
    at /Users/manu/developer/@escorts/escorts-admin/node_modules/async/lib/async.js:52:16
    at Immediate.<anonymous> (/Users/manu/developer/@escorts/escorts-admin/node_modules/async/lib/async.js:1206:34)
    at runCallback (timers.js:789:20)
    at tryOnImmediate (timers.js:751:5)
    at processImmediate [as _immediateCallback] (timers.js:722:5)
POST /forest/stats/users 500 76.607 ms - 81

Context

I am trying to create a pie chart showing users with various roles

#users
'use strict';

module.exports = (sequelize, DataTypes) => {
  var Model = sequelize.define(
    'users',
    {
      id: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
      },
      role_id: {
        type: DataTypes.INTEGER,
        allowNull: false
      },
      first_name: {
        type: DataTypes.STRING,
        allowNull: false
      },
      last_name: {
        type: DataTypes.STRING,
        allowNull: false
      },
      phone: {
        type: DataTypes.INTEGER,
        allowNull: false
      },
      address: {
        type: DataTypes.STRING
      },
      village_id: {
        type: DataTypes.INTEGER,
        allowNull: false
      },
      profile_verified: {
        type: DataTypes.INTEGER,
        defaultValue: 1
      },
      active: {
        type: DataTypes.BOOLEAN,
        defaultValue: 1
      }
    },
    {
      tableName: 'users',
      underscored: true,
      timestamps: false
    }
  );

  Model.associate = models => {
    Model.belongsTo(models.villages, {
      foreignKey: 'village_id',
      targetKey: 'id'
    }),
      Model.belongsTo(models.user_roles, {
        foreignKey: 'role_id',
        targetKey: 'id'
      }),
      Model.hasMany(models.implements, {
        foreignKey: 'owner_user_id',
        sourceKey: 'id'
      }),
      Model.hasMany(models.tractors, {
        foreignKey: 'owner_user_id',
        sourceKey: 'id'
      }),
      Model.hasMany(models.fields, {
        foreignKey: 'owner_user_id',
        sourceKey: 'id'
      }),
      Model.hasMany(models.requests, {
        foreignKey: 'create_user_id',
        sourceKey: 'id'
      }),
      Model.hasMany(models.documents, {
        foreignKey: 'user_id',
        sourceKey: 'id'
      });
  };

  return Model;
};
#user_roles
'use strict';

module.exports = (sequelize, DataTypes) => {
  var Model = sequelize.define('user_roles', {
    id: {
      type: DataTypes.INTEGER,
      primaryKey: true,
      autoIncrement: true
    },
    role: {
      type: DataTypes.STRING,
    },
  }, {
    tableName: 'user_roles',
    
    timestamps: false,
    
  });

  Model.associate = (models) => {
  };

  return Model;
};


  • Package Version:
  • Express Version:
  • Sequelize Version: 1.5.6
  • Database Dialect: MySQL
  • Database Version:

manurana avatar Nov 28 '17 11:11 manurana

Hey @manurana, is it a simple chart or a Smart Chart? if it is a simple chart, can you share your Chart configuration? if it is a Smart Chart, can you share your Smart Chart code?

Thank you

arnaudbesnier avatar Nov 28 '17 14:11 arnaudbesnier

Its a simple chart, count of users broken up by role_id (which in turn is a FK to the user_roles table)

manurana avatar Nov 29 '17 06:11 manurana

Its a simple chart, count of users broken up by role_id (which in turn is a FK to the user_roles table)

Did you find a fix to this? I have exactly the same. Tried commenting out all other associations to exclude those tables from possible causes without any luck

art-dc avatar Feb 23 '19 16:02 art-dc