Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

96
Visualizações
How create (optimize) service on Backend (ExpressJS) with sequelize

Tried to create API for internet store using ExpressJS and sequelize. I have users, basket and devices. To connect basket and choosen by user devices used middle table BasketDevice.

Models:

export const Models = {

    User: sequelize.define('user',
        {
            id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
            email: { type: DataTypes.STRING, unique: true },
            password: { type: DataTypes.STRING },
            role: { type: DataTypes.STRING, defaultValue: 'USER' },
            isActivated: { type: DataTypes.BOOLEAN, defaultValue: false},
            activationLink: { type: DataTypes.STRING, unique: true }
        }
    ),
    Basket: sequelize.define('basket',
        {
            id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
        }
    ),
    BasketDevice: sequelize.define('basketDevice',
        {
            id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },        
        }
    ),
    Device: sequelize.define('device',
        {
            id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
            name: { type: DataTypes.STRING, allowNull: false, unique: true },
            price: { type: DataTypes.INTEGER, allowNull: false },
            img: { type: DataTypes.STRING, allowNull: false },
            rating: { type: DataTypes.INTEGER, defaultValue: 0 },
        }
}

Assotiations between tables:

Models.User.hasOne(Models.Basket)
Models.Basket.belongsTo(Models.User)

Models.Basket.hasMany(Models.BasketDevice, {as: 'devices'})
Models.BasketDevice.belongsTo(Models.Basket)

Models.Device.hasMany(Models.BasketDevice)
Models.BasketDevice.belongsTo(Models.Device)

Tryed to give in response basket include basket device

Basket service:

class BasketService {
    async getBasket(token: string) {
        const userData = await TokenService.verifyRefreshToken(token) as any
        const basket = await Models.Basket.findOne({
             where: { userId: userData.id },
             include: [{model: Models.BasketDevice, as: 'devices'}]
            })

        return basket
    }
}

Don't know how create getBasket function that gives added to cart devices and counting of one device What is the opltimal way to give devices added in basket?

almost 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda