我用的是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] 删除。
我来说两句