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

123
Visualizações
Fábrica de API Express Mongoose

Estoy tratando de crear una fábrica de API para node.js, Express, Mongoose Tech stack. También quiero proporcionar seguridad de tipo completa usando Typescript y la opción de agregar validación adicional para creación y actualizaciones. Por ejemplo, tengo un "validador" así:

 type ICheckIfUnique = <M, T extends Model<M>, K extends keyof M>( attributes: { model: T; key: K; }, body: M ) => void; export const checkIfUnique: ICheckIfUnique = async (attributes, body) => { const { model, key } = attributes; const value = body[key]; const isUnique = !(await model.findOne({ [key]: value })); if (!isUnique) { throw `${key} is not unique!`; } };

Pero no puedo obtener el tipo correcto cuando obtengo:

ingrese la descripción de la imagen aquí

Tampoco puedo encontrar la forma de obtener tipos de modelos personalizados para los métodos de fábrica:

 export const factoryCreateEndpoint = <T, D extends Model<T>>(model: D, additionalLogic?: any) => async (req: Request, res: Response): Promise<Response | undefined> => { const body = req.body; if (!body) { return res.status(400).json({ success: false, error: `You must provide ${capitalize( model.collection.name.slice(0, -1) )}.`, }); } if (additionalLogic) { try { for (const element in additionalLogic) { const { validator, additionalVariables } = additionalLogic[element]; await validator(additionalVariables, req.body); } } catch (error) { return res.status(400).json({ success: false, error }); } } try { const object = new model(body); await object.save(); return res.status(201).json({ success: true, id: object._id, message: `${capitalize(model.collection.name.slice(0, -1))} created.`, }); } catch (error) { return res.status(400).json({ success: false, error }); } };

Pero con este tipo genérico obtengo:

ingrese la descripción de la imagen aquí

over 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