错误:TypeError:user.getTempContributions 不是函数

钱鼠

我用的是Sequelize6.17,懒加载不行。我使用由 Sequelize 生成的函数 getTempContributions(),但它会出现 user.getTempContributions 不是函数的错误。我尝试了很多方法。我在 UserCard 类中添加了一个函数声明,似乎 sequelize 没有t generatef 函数 getTempContributions() 正确。我不知道我拿这个代码有什么问题。

错误

TypeError: user.getTempContributions is not a function
    at F:\builderBackend\src\Temp\test.ts:7:48
    at Generator.next (<anonymous>)
    at fulfilled (F:\builderBackend\src\Temp\test.ts:5:58)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)

我尝试了很多方法,但它也不起作用。这是我的最后一个代码。

测试.ts

import {TempContribution, TempTask} from "./model";
import {UserCard} from "../Authority/model";

(async ()=>{
    const user:UserCard|null = await UserCard.findByPk(1);
    if(user){
        const tempTask:TempTask[] = await user.getTempContributions();
        console.log(tempTask);
    }
})()

权威/模型

import {sequelize} from "../../database";
import {Model, DataTypes, InferAttributes, InferCreationAttributes} from "sequelize";
import {TempTask} from "../Temp/model";

class UserCard extends Model {
    declare userId: number;
    declare address: string;
    declare email: string;
    declare google: string;
    declare avatar: string;
    declare getTempContributions: () => Promise<TempTask[]>;
}

UserCard.init({
    userId: {
        type: DataTypes.INTEGER,
        primaryKey: true,
        autoIncrement: true
    },
    address: {
        type: DataTypes.STRING,
        unique: true,
        allowNull: false
    },
    email: {
        type: DataTypes.STRING,
        allowNull: true,
        validate: {isEmail: true}
    },
    google: {
        type: DataTypes.STRING,
        allowNull: true
    },
    avatar: {
        type: DataTypes.TEXT,
        allowNull: true,
        defaultValue: "lena.jpg"
    },
}, {
    sequelize,
    modelName: "UserCard",
});

export {UserCard};

模型.ts

import {DataTypes, Model} from "sequelize";
import {sequelize} from "../../database";
import {UserCard} from "../Authority/model";

class TempTask extends Model{
    declare id: number;
}

class TempContribution extends Model{
    declare status: string;
}

TempTask.init({
    id:{
        type:DataTypes.INTEGER,
        primaryKey:true,
        autoIncrement:true
    }
},{
    sequelize,
    timestamps:false,
    modelName:"TempTask"
});

TempContribution.init({
    status:DataTypes.ENUM("processing","submitted")
},{
    sequelize,
    modelName:"TempContribution",
    timestamps:false
});

//@ts-ignore
TempTask.hasMany(TempContribution);
//@ts-ignore
TempContribution.belongsTo(TempTask);
//@ts-ignore
UserCard.hasMany(TempContribution);
//@ts-ignore
TempContribution.belongsTo(UserCard);


export {TempTask,TempContribution};
阿纳托利

请使用函数注册所有模型,然后才注册所有关联。
请在此处查看我的答案以了解如何操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章