gpt4 book ai didi

javascript - Nodejs - 获取 Mongoose typescript 错误

转载 作者:行者123 更新时间:2023-12-04 08:29:26 25 4
gpt4 key购买 nike

typescript 错误

我在整个后端使用相同的模式方法,但由于某种原因只有这个方法出错。直到今天早上它都运行良好。

网站中的所有其他模式都采用完全相同的方法,但这个模式会引发错误。

Error :

[ERROR] 19:52:58 ⨯ Unable to compile TypeScript:
src/models/project.ts(81,3): error TS2554: Expected 0-1 arguments, but got 2.
src/models/project.ts(83,17): error TS7006: Parameter 'doc' implicitly has an 'any' type.
src/models/project.ts(83,22): error TS7006: Parameter 'ret' implicitly has an 'any' type.
src/models/project.ts(90,15): error TS2551: Property 'statics' does not exist on type 'Schema'.
Did you mean 'static'?

Schema :

interface ProjectAttrs {
user: string;
profile: string;
title: string;
image: string;
description: string;
type: categories;
}

export interface ProjectDoc extends mongoose.Document {
user: string;
profile: string;
title: string;
image: string;
collabImages: string[];
description: string;
comments: string[];
likes: number;
likers: ProfileDoc[];
state: boolean;
// requesters: ProfileDoc[];
requests: string[];
team: string[];
type: categories;
}

interface ProjectModel extends mongoose.Model<ProjectDoc> {
build(attrs: ProjectAttrs): ProjectDoc;
}

const projectSchema = new mongoose.Schema(
{
user: { type: String, required: true },
profile: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: "Profile",
},
title: { type: String, required: true },
image: { type: String },
collabImages: [{ type: String,
required: false}],
description: { type: String, required: true },
comments: [{ type: mongoose.Schema.Types.ObjectId, ref: "Comment"}],
state: { type: Boolean, default: true },
likes: { type: Number, default: 0 },
likers: [{ type: mongoose.Schema.Types.ObjectId, ref: "Profile"}],
requests: [{ type: mongoose.Schema.Types.ObjectId, ref: "Request"}],
team: [{ type: mongoose.Schema.Types.ObjectId, ref: "Profile"}],
type: { type: String, required: true },
createdAt: { type: Date, default: Date.now() },
},
{
toJSON: {
transform(doc, ret) { // ERROR
ret.id = ret._id; // ERROR
delete ret._id; // ERROR
},
},
}
);
projectSchema.statics.build = (attrs: ProjectAttrs) => {
return new Project(attrs);
};
const Project = mongoose.model<ProjectDoc, ProjectModel>(
"Project",
projectSchema
);
export { Project };

我想知道我在这里缺少什么。非常感谢您的帮助。

最佳答案

根据 mongoose 文档,需要进行一些更改。

请看下面的代码

import mongoose from 'mongoose';

interface ProjectAttrs {
user: string;
profile: string;
title: string;
image: string;
description: string;
type: categories;
}

export interface ProjectDoc extends mongoose.Document {
user: string;
profile: string;
title: string;
image: string;
collabImages: string[];
description: string;
comments: string[];
likes: number;
likers: ProfileDoc[];
state: boolean;
// requesters: ProfileDoc[];
requests: string[];
team: string[];
type: categories;
}

interface ProjectModel extends mongoose.Model<ProjectDoc> {
build(attrs: ProjectAttrs): ProjectDoc;
}

const projectSchema = new mongoose.Schema(
{
user: { type: String, required: true },
profile: {
type: mongoose.Schema.Types.ObjectId,
required: true,
ref: "Profile",
},
title: { type: String, required: true },
image: { type: String },
collabImages: [{ type: String,
required: false}],
description: { type: String, required: true },
comments: [{ type: mongoose.Schema.Types.ObjectId, ref: "Comment"}],
state: { type: Boolean, default: true },
likes: { type: Number, default: 0 },
likers: [{ type: mongoose.Schema.Types.ObjectId, ref: "Profile"}],
requests: [{ type: mongoose.Schema.Types.ObjectId, ref: "Request"}],
team: [{ type: mongoose.Schema.Types.ObjectId, ref: "Profile"}],
type: { type: String, required: true },
createdAt: { type: Date, default: Date.now() },
}
);



//REVIEW THIS PART SINCE SOMETHING MIGHT BE MISSING
schema.set('toJson', {transform:function(doc: any, ret:any) {
ret.id = ret._id;
delete ret._id;
}});


//THIS WAS CHANGED NO LONGER STATICS
projectSchema.static('build', (attrs: ProjectAttrs) => {
return new Project(attrs);
});


const Project = mongoose.model<ProjectDoc, ProjectModel>(
"Project",
projectSchema
);
export { Project };

关于javascript - Nodejs - 获取 Mongoose typescript 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65099054/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com