es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La propiedad ‘pwd’ no existe en el tipo ‘Model‘. sequelize typescript

Estoy obteniendo este error: Property ‘pwd’ no existe en el tipo ‘Model<any, any=””>’, incluso cuando el modelo está definido como Model<attribs, optionalattribs=””>. A continuación se muestra un fragmento de código.

Definición del modelo:

import { Optional, ModelAttributes, STRING, UUID, DataTypes } from 'sequelize'
import { Table, Model } from 'sequelize-typescript'

export type Attribs = Required<iappuser>
export type OptionalAttribs = Optional<iappuser, 'id'="">

@Table
class AppUser extends Model<attribs, optionalattribs=""> {
    public pwd!: string
}

export const AppUserAttributes = {
    id: {
        type: UUID,
        defaultValue: DataTypes.UUIDV4,
        allowNull: false
    }
    pwd: {
        type: STRING,
        allowNull: false
    }
}

import { Sequelize } from 'sequelize-typescript'
sequelize.addModels([AppUser, Algo])

AppUser.init(AppUserAttributes, {sequelize})
AppUser.sync({ force: true })

Uso:

const page = req.params.page ? req.params.page : 1;
const limit = req.params.limit ? req.params.limit : 10;
const appUsers = await AppUser.findAll({
    limit: limit,
    offset: (page - 1) * limit,
    order: [['id', 'DESC']],
});
appUsers?.forEach((appUser) => {
    console.log(appUser)
    appUser.pwd = '******';
})

package.json:

"sequelize": "^6.12.2",
"sequelize-typescript": "^2.1.1",

¿Por qué no puede identificar appUser como tipo de Model<attribs, optionalattribs=””>, y en su lugar lo toma como Model<any, any=””>? ¿Alguna pista sobre esto? Puede encontrar el código en https://github.com/arunsoman/mintit.</any,></attribs,></attribs,></iappuser,></attribs,></any,>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El error “Property ‘pwd’ does not exist on type ‘Model<any, any=””>'” está ocurriendo porque TypeScript no es capaz de inferir los tipos de los atributos del modelo AppUser. Esto podría ser debido a algunas razones:

    1. Importación incorrecta de la clase Model desde sequelize-typescript. Asegúrate de importar Model desde sequelize-typescript en lugar de sequelize.
    2. Uso incorrecto de sequelize.addModels. Si estás utilizando sequelize.addModels, asegúrate de pasar el array correcto de clases de modelo.

    3. Definición incorrecta de Attribs y OptionalAttribs. Asegúrate de que Attribs y OptionalAttribs estén correctamente definidos para que coincidan con los atributos de AppUser.

    Para solucionar este problema, puedes intentar lo siguiente:

    1. Cambia tu declaración de importación para Model a:
      import { Model } from 'sequelize-typescript';
      
    2. Cambia tu llamada a sequelize.addModels a:
      sequelize.addModels([AppUser]);
      
    3. Asegúrate de que Attribs y OptionalAttribs estén definidos correctamente. Por ejemplo:
      export type Attribs = {
       id: string;
       pwd: string;
       // otros atributos...
      };
      
      export type OptionalAttribs = {
       id?: string;
       pwd?: string;
       // otros atributos...
      };
      

    Realizando estos cambios, TypeScript debería ser capaz de inferir correctamente los tipos y el error debería resolverse.</any,>

Comments are closed.