我正在试图找出我在TypeScript项目中定义的猫鼬模型出了什么问题。 遵循本教程中使用Mongoose和TypeScript的强类型模型,我定义了这个模型:
import mongoose from 'mongoose';
const { Schema, Document } = mongoose;
export interface IDoctor extends Document {
firstName: string;
lastName: string;
}
const DoctorSchema: Schema = new Schema({
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
}
});
export default mongoose.model<IDoctor>('Doctor', DoctorSchema);
但TypeScript抱怨schema
和document
引用了一个值,但在此处被用作类型
我使用“mongoose”:“^5.9.24”
和“@types/mongoose”:“^5.7.32”
我的tsconfig.json:
{
"compilerOptions": {
"extendedDiagnostics": false,
"traceResolution": false,
"noUnusedParameters": false,
"noUnusedLocals": false,
"allowUnusedLabels": false,
"target": "es2017",
"module": "esnext",
"lib": [
"es2019"
],
"pretty": true,
"sourceMap": true,
"outDir": "dist",
"importHelpers": true,
"strict": true,
"moduleResolution": "node",
"esModuleInterop": true,
"rootDir": "src",
"noImplicitAny": false,
"strictNullChecks": false,
"noImplicitThis": true,
"alwaysStrict": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true,
"baseUrl": ".",
"paths": {
"*": [
"node_modules/*",
"src/types/*"
]
},
"allowSyntheticDefaultImports": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"resolveJsonModule": true
},
"include": [
"src/**/*"
],
"exclude": [
"src/types/*"
]
}
mogoose
似乎没有默认导出。 所以你应该这样做:
import * as mongoose from 'mongoose';
此外,还应导入类类型,如:
import {Schema, Document} from 'mongoose';