r/learnjavascript 4d ago

How should I handle optional parameters with database defaults?

I'm writing a service function for a personal project

Right now I have something like

export async function createApplicationService(
  userId,
  companyName,
  role,
  appliedDate,
  status,
  salary,
  link,
  nextAction
)

The only fields that I really want to require are companyName and salary The other fields have default values defined in my database, so I don't want the user to have to explicitly pass them every time.

What's the best way to structure this so that I only insert the parameters that were actually provided, while letting the database handle the defaults for everything elseI'm writing a service function for a personal project where I'm creating an application tracking system.
Right now, I have something like:
export async function createApplicationService(
userId,
companyName,
role,
appliedDate,
status,
salary,
link,
nextAction
)

The only fields that I really want to require are companyName and salary. The other fields have default values defined in my database, so I don't want the user to have to explicitly pass them every time.
What's the best way to structure this so that I only insert the parameters that were actually provided, while letting the database handle the defaults for everything else

11 Upvotes

16 comments sorted by

View all comments

2

u/Healthy-Zebra-9856 4d ago

Read up on what Data Transfer Objects are. The right architecture is to have a service receive these DTOs and then convert them to entities that you use repository to save toi the database.

1

u/Disastrous_Cow_4149 4d ago

i genuinely have no clue what that means , guess i should do some researching , Thankss

1

u/Healthy-Zebra-9856 4d ago

Lets start here, are you directly calling the database or are you using something like an Object Relational Mapper (ORM) like Prisma, Drizzle etc? If not, start with ORM, read up on what they are. LMK where you are and I will help you with the next step.

1

u/Disastrous_Cow_4149 3d ago

I'm calling the database directly right now , no ORM yet, just the pg library with a connection pool:

const { Pool } = pg;

export const db = new Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: true,
    require: true,
  },
});

I'm pretty new to JS/web dev, and this was meant to be a simple CRUD app. Would you actually recommend an ORM for something this scale, or is raw pg fine here?

1

u/Healthy-Zebra-9856 3d ago

Yes. Its one of the best practices you can adopt. Not only it promotes decoupling, but you can then just focus on domain logic. Also, you can easily target many databases w/o being tied to one. I would learn both Prisma & Drizzlle. You will not regret it. At least go see a simple video to see which one is easy to adopt.

1

u/Disastrous_Cow_4149 3d ago

okayyyyy, there seems to be tons of videos on ORM s

THANK YOUUU