adminjs icon indicating copy to clipboard operation
adminjs copied to clipboard

[Bug]: In some resorce getting randome email id insted of my data which is an incremental int value prsenent in id column

Open vikas21222 opened this issue 2 years ago • 6 comments

Screenshot from 2023-06-09 14-40-06

vikas21222 avatar Jun 09 '23 11:06 vikas21222

or in same table getting javascript error Screenshot from 2023-06-09 17-01-41

vikas21222 avatar Jun 09 '23 11:06 vikas21222

Can you share your entity's schema and what's the ORM/ODM/AdminJS adapter you're using?

dziraf avatar Jun 09 '23 11:06 dziraf

Can you share your entity's schema and what's the ORM/ODM/AdminJS adapter you're using?

ORM -SEQUELIZE

image

package.json image

vikas21222 avatar Jun 09 '23 12:06 vikas21222

admin.js file

import * as AdminJSMongoose from '@adminjs/mongoose';

import AdminJS from 'adminjs'; import AdminJSExpress from '@adminjs/express'; import AdminJSSequelize from '@adminjs/sequelize'; import Connect from 'connect-pg-simple'; import adminOptions from './app/routes/admin_models.js'; import cors from 'cors'; import dbConfig from './config/database.cjs'; import dotenv from 'dotenv'; import exceptionHandler from './lib/exceptionHandler.js'; import express from 'express'; import http from 'http'; import mongoose from 'mongoose'; import session from 'express-session';

// Dot ENV config to load *.env files based on profile development/production/test if(process.env.NODE_ENV != 'production'){ dotenv.config(); }

const dbOptions = dbConfig[process.env.NODE_ENV]; const connectionURL = postgres://${dbOptions.username}:${dbOptions.password}@${dbOptions.host}:${dbOptions.port}/${dbOptions.database};

const DEFAULT_ADMIN = { email: '[email protected]', password: 'xxxx', };

const authenticate = async (email, password) => { if (email === DEFAULT_ADMIN.email && password === DEFAULT_ADMIN.password) { return Promise.resolve(DEFAULT_ADMIN); }

return null; };

const app = express();

// mongoose.connect(process.env.DB_MONGO_URL); app.use(cors());

AdminJS.registerAdapter({ Resource: AdminJSSequelize.Resource, Database: AdminJSSequelize.Database, });

// AdminJS.registerAdapter({ // Resource: AdminJSMongoose.Resource, // Database: AdminJSMongoose.Database, // });

// TODO: migrate to sequelize, just using example for now https://docs.adminjs.co/installation/plugins/express const ConnectSession = Connect(session); const sessionStore = new ConnectSession({ conObject: { connectionString: connectionURL, ssl: process.env.NODE_ENV === 'production', }, tableName: 'session', createTableIfMissing: true, });

const admin = new AdminJS(adminOptions);

const adminRouter = AdminJSExpress.buildAuthenticatedRouter( admin, { authenticate, cookieName: 'adminjs', cookiePassword: 'sessionsecret', }, null, { store: sessionStore, resave: true, saveUninitialized: true, secret: 'sessionsecret', cookie: { httpOnly: process.env.NODE_ENV === 'production', secure: process.env.NODE_ENV === 'production', }, name: 'adminjs', } );

app.use(admin.options.rootPath, adminRouter); app.use(exceptionHandler);

const server = http.createServer(app);

export default server;

vikas21222 avatar Jun 09 '23 12:06 vikas21222

I was asking about User Banks entity, I want to figure out why it uses email in your id column.

dziraf avatar Jun 09 '23 12:06 dziraf

I was asking about User Banks entity, I want to figure out why it uses email in your id column.

user bank model

import { DataTypes, Model } from 'sequelize';

import BankIfscMaster from './bank_ifsc_master.js'; import UserSip from './user_sip.js'; import sequelize from '../../lib/sequelize.js';

class UserBank extends Model { /**

  • Helper method for defining associations.
  • This method is not a part of Sequelize lifecycle.
  • The models/index file will call this method automatically. */ static associate(models) { // define association here } } // TODO: Raise validation error if user bank accs greater than 5 for same ucc UserBank.init({ id: { type: DataTypes.BIGINT, primaryKey: true, autoIncrement: true }, user_id: { type: DataTypes.BIGINT }, bank_account_number: { type: DataTypes.STRING }, ifsc_code: DataTypes.STRING, bank_account_type_bse_code: DataTypes.STRING, bse_user_id: { type: DataTypes.BIGINT, references: { model: { tableName: 'bse_users' }, key: 'id' } }, ucc_bank_num: DataTypes.INTEGER }, { sequelize, modelName: 'UserBank', tableName: 'user_banks', underscored: true, hooks: { beforeCreate: async (userBank, options) => { const count = await UserBank.count({ where: { user_id: userBank.user_id, bse_user_id: userBank.bse_user_id }}); userBank.ucc_bank_num = count + 1; } } });

UserBank.hasOne(BankIfscMaster, { foreignKey: 'ifsc_code', sourceKey: 'ifsc_code' }); UserSip.belongsTo(UserBank, { foreignKey: 'user_bank_id', targetKey: 'id' }); UserBank.hasMany(UserSip, { foreignKey: 'user_bank_id', sourceKey: 'id'});

export default UserBank;

vikas21222 avatar Jun 09 '23 13:06 vikas21222