79698378

Date: 2025-07-11 13:06:27
Score: 0.5
Natty:
Report link

If your categories are specific, then yes. I suggest you create specific components for each product category.

I did the same thing in one of my projects. Each entity had different features depending on category, but entities from all categories had some features that are common in all of them. So, not only I created separate components, each one representing an entity of each category, but I also created separate tables in my database for each entity category.

I took the inspiration from discriminated unions pattern in TypeScript. It works very similar to what I am describing.

(Disclosure: I wrote a blog post on discriminated unions in TypeScript that explains how this pattern works in detail.)

So, in your case, I would even go as far as creating a separate class for a specific products category, like ElectronicsProduct, and replacing features with the specifc features, like:

public class ElectronicsProduct {
    @Id
    @MongoId
    private String productId;
    private String productName;
    private String productTitle;
    private final String productCategory = "Electronics"; // Discriminant value
    private String productDescription;
    private int price;
    private Date addedDate;
    private Date lastUpdatedDate;
    private String imageName;
    private boolean stock;
    private String brand;
    private String rom;
    private String processor;
    private String battery;
    private String ram;
}

Notice how I hardcoded the productCategory field? It's called the `discriminant value`. It tells both your backend and frontend which product type you're dealing with. It's what you'll use in your frontend to decide what component to render, like:

product.productCategory === "Electronics" ? <ElectronicsProduct /> : <OtherCategoryProduct />

Ditto for the other categories.

This pattern will keep your codebase scalable as new categories are added.

This article about discriminated unions in sql helped me a lot in understanding the concept. Although it focuses on SQL rather than MongoDB, the core concepts still apply and should be useful to you

Reasons:
  • Blacklisted phrase (1): This article
  • Blacklisted phrase (1): helped me a lot
  • Whitelisted phrase (-1): in your case
  • Long answer (-1):
  • Has code block (-0.5):
  • Contains question mark (0.5):
  • Low reputation (0.5):
Posted by: Marsou001