문서 대신 내 모델의 인터페이스 만 내보내고 아무도 내 모델을 수정할 수 없도록합니다. 내 모델이 자체 클래스 메서드에 없으면 수정할 수 있습니다.몽구스 + Typescript -> 모델 인터페이스 내보내기
IUSER :
interface IUser {
_id: string;
name: string;
email: string;
created_at: number;
updated_at: number;
last_login: number;
}
그리고 스키마 :
let userSchema: Mongoose.Schema = new Mongoose.Schema({
'name': String,
'email': String,
'created_at': {'type': Date, 'default': Date.now},
'updated_at': {'type': Date, 'default': Date.now},
'last_login': {'type': Number, 'default': 0},
});
interface UserDocument extends IUser, Mongoose.Document {}
그리고 모델
// Model
let Users: Mongoose.Model<UserDocument> = Mongoose.model<UserDocument>('User', userSchema);
그래서 난 그냥 수출 나는 인터페이스와 같은 스키마를 정의 IUser 및 클래스 사용자에게는 기본적으로 내 모델을 업데이트하는 모든 메서드가 있습니다.
문제는 typescript가 _id를 인터페이스에 추가하면 불만을 나타내지 만 실제로 필요하다면 그렇지 않으면 UserDocument를 전달해야하므로 그 작업을 원하지 않습니다. 오류 타이프립트는 다음과 같습니다 :
오류 TS2320 : 인터페이스 'UserDocument'는 'IUser'및 'Document'유형을 동시에 확장 할 수 없습니다. 'IUser'및 'Document'형식의 '_id'속성이 동일하지 않습니다.
아이디어가 어떻게 내 인터페이스에 _id 속성을 추가 할 수 있습니까?
감사합니다.
몽구스의'_id'는 기본적으로'ObjectId' ('mongoose.Schema.Types.ObjectId') 타입입니다. – robertklep
안녕하세요 @robertklep, 나는 이미 문자열 대신에 그것을 시도했지만, 나는 _id를 넣을 때만 똑같은 오류를줍니다 : 어떤 불평도 멈추지 만 이상적이지는 않습니다. – asheinfeld
너무 나빴어 : (TS에 대한 경험이 없으므로 걱정할 필요가 없다.) – robertklep