SoftwareBrothers / adminjs

AdminJS is an admin panel for apps written in node.js
https://adminjs.co
MIT License
8.06k stars 645 forks source link

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

Open vikas21222 opened 1 year ago

vikas21222 commented 1 year ago

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

vikas21222 commented 1 year ago

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

dziraf commented 1 year ago

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

vikas21222 commented 1 year ago

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 commented 1 year ago

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: 'admin@xxx.com', 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;

dziraf commented 1 year ago

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

vikas21222 commented 1 year ago

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 { /**

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;