Ad

How Can I Extend A Class In Node JS By My Custom Constructor?

I have the following in a Node Js model. This file exists in another project that cannot be changed but is locally available to the other projects.

module.exports = {
    base: require('*/cartridge/models/product/decorators/base'),
    availability: require('*/cartridge/models/product/decorators/availability')
};

All the methods here act like constructors of the class Product. Now I want to add another attribute that should be available when I try to access Product.badge. For this, I have tried to extend the above model in the following way:

var indexBase = require('*/cartridge/models/product/decorators/index');

indexBase.badge = require('*/cartridge/models/product/decorators/badge');

module.exports = indexBase;

But it seems throw an error, I have tried to log the Badge Type, but I still cannot access the badge type here.

I am calling the above object as the following:

var decorators = require('*/cartridge/models/product/decorators/index');
decorators.badge(product, variantProduct);

I want to know how can I extend an existing class as I want to add a custom constructor?

Here only the syntax is based on Node Js but this code is written for SFRA in Salesforce B2C Commerce.

Ad

Answer

All you need to do is in the index.js file:

var indexBase = module.superModule;

instead of:

var indexBase = require('*/cartridge/models/product/decorators/index');

and it will work perfectly fine.

Ad
source: stackoverflow.com
Ad