带有打字稿的模型猫鼬的接口类型
Interface type for model mongoose with typescript
我有 2 个模型
import {model, Schema, Types} from 'mongoose'
interface IResource {
user : Types.ObjectId | IUsers,
type : Types.ObjectId | IResourceData,
value : number,
lastUpdate : number | Date,
const ResourceSchema = new Schema<IResource>({
user : {type : Types.ObjectId, ref : 'users'},
type : {type: Types.ObjectId , ref : 'resource_datas'},
lastUpdate : {type : Date , default : Date.now},
value : {type : Number, default : 500}
})
const Resources = model<IResource>('resources' , ResourceSchema)
interface IResourceData {
name : string,
}
const ResourceDataSchema = new Schema<IResourceData>({
name : {type : String},
})
const ResourceDatas = model<IResourceData>('resource_datas' , ResourceDataSchema)
当我找到资源然后填充类型时,我无法访问 type.name
const userResource = await Resources.findOne({user : _id}).populate('type')
const resourceName = userResource.type.name //Error here
VSCode 显示错误
Property 'name' does not exist on type 'ObjectId | IResourceData'.
Property 'name' does not exist on type 'ObjectId'.
我该如何解决?
找到了
interface ITypeOfResource extends Types.ObjectId,IResourceData{}
interface IResource {
user : Types.ObjectId | IUsers,
type : ITypeOfResource
value : number,
lastUpdate : number | Date,
}
我有 2 个模型
import {model, Schema, Types} from 'mongoose'
interface IResource {
user : Types.ObjectId | IUsers,
type : Types.ObjectId | IResourceData,
value : number,
lastUpdate : number | Date,
const ResourceSchema = new Schema<IResource>({
user : {type : Types.ObjectId, ref : 'users'},
type : {type: Types.ObjectId , ref : 'resource_datas'},
lastUpdate : {type : Date , default : Date.now},
value : {type : Number, default : 500}
})
const Resources = model<IResource>('resources' , ResourceSchema)
interface IResourceData {
name : string,
}
const ResourceDataSchema = new Schema<IResourceData>({
name : {type : String},
})
const ResourceDatas = model<IResourceData>('resource_datas' , ResourceDataSchema)
当我找到资源然后填充类型时,我无法访问 type.name
const userResource = await Resources.findOne({user : _id}).populate('type')
const resourceName = userResource.type.name //Error here
VSCode 显示错误
Property 'name' does not exist on type 'ObjectId | IResourceData'.
Property 'name' does not exist on type 'ObjectId'.
我该如何解决?
找到了
interface ITypeOfResource extends Types.ObjectId,IResourceData{}
interface IResource {
user : Types.ObjectId | IUsers,
type : ITypeOfResource
value : number,
lastUpdate : number | Date,
}