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,>
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:Model
desdesequelize-typescript
. Asegúrate de importarModel
desdesequelize-typescript
en lugar desequelize
.Uso incorrecto de
sequelize.addModels
. Si estás utilizandosequelize.addModels
, asegúrate de pasar el array correcto de clases de modelo.Definición incorrecta de
Attribs
yOptionalAttribs
. Asegúrate de queAttribs
yOptionalAttribs
estén correctamente definidos para que coincidan con los atributos deAppUser
.Para solucionar este problema, puedes intentar lo siguiente:
Model
a:sequelize.addModels
a:Attribs
yOptionalAttribs
estén definidos correctamente. Por ejemplo:Realizando estos cambios, TypeScript debería ser capaz de inferir correctamente los tipos y el error debería resolverse.</any,>