Node.js MongooseError[MissingSchemaError]:模式没有';“未注册型号”;ModuleDetail“;
这是模块模式Node.js MongooseError[MissingSchemaError]:模式没有';“未注册型号”;ModuleDetail“;,node.js,mongodb,typescript,mongoose,Node.js,Mongodb,Typescript,Mongoose,这是模块模式 import { Document, Model, model, Schema} from 'mongoose' import { ModuleRecord } from '../interfaces/module' export interface ModuleModel extends ModuleRecord, Document {} export const ModuleSchema: Schema = new Schema({ moduleType:String
import { Document, Model, model, Schema} from 'mongoose'
import { ModuleRecord } from '../interfaces/module'
export interface ModuleModel extends ModuleRecord, Document {}
export const ModuleSchema: Schema = new Schema({
moduleType:String,
moduleDetail:[{
type:Schema.Types.ObjectId,
ref:'ModuleDetail'
}],
}, {
timestamps: true
})
export const ModuleSchemaModel: Model<ModuleModel> =
model<ModuleModel>('Module', ModuleSchema)
我将获取模块列表
import { ModuleSchemaModel } from "../models/module"
export const fetchModuleList= (moduleId:string) => {
return new Promise<ModuleModel[]>((resolve, reject) => {
ModuleSchemaModel.findById(moduleId)
.populate({
path:'moduleDetail',
model:'ModuleDetail'
})
.then((modules:ModuleModel[]) => {
resolve(module)
})
.catch((error:any) => {
console.log(error)
});
从“./模型/模块”导入{ModuleSchemaModel}
导出常量fetchModuleList=(moduleId:string)=>{
返回新承诺((解决、拒绝)=>{
ModuleSchemaModel.findById(moduleId)
.填充({
路径:'moduleDetail',
型号:'ModuleDetail'
})
。然后((模块:ModuleModel[])=>{
解析(模块)
})
.catch((错误:任意)=>{
console.log(错误)
});
但出现了以下错误
MongooseError[MissingSchemaError]:尚未为注册架构
模型“ModuleDetail”。在新建时使用mongoose.model(名称、模式)
丢失模式错误
(/usr/src/app/node_modules/mongoose/lib/error/missingSchema.js:20:11)
在NativeConnection.Connection.model上
(/usr/src/app/node_modules/mongoose/lib/connection.js:785:11)
getModelsMapForPopulate
(/usr/src/app/node_modules/mongoose/lib/model.js:3986:20)位于
(/usr/src/app/node_modules/mongoose/lib/model.js:3488:21)在
(/usr/src/app/node_modules/mongoose/lib/model.js:3458:5)
/usr/src/app/node_modules/mongoose/lib/model.js:3431:5 at
Object.promiseOrCallback
(/usr/src/app/node_modules/mongoose/lib/utils.js:231:14)
Function.Model.populate
(usr/src/app/node_modules/mongoose/lib/model.js:3430:16)
(/usr/src/app/node_modules/mongoose/lib/query.js:1652:17)
/usr/src/app/node_modules/mongodb/lib/utils.js:414:17 at
executeCallback(/usr/src/app/node_modules/mongodb/lib/utils.js:406:9)
在handleCallback
(/usr/src/app/node_modules/mongodb/lib/utils.js:128:55)
/usr/src/app/node_modules/mongodb/lib/operations/cursor_ops.js:218:62
在handleCallback
(/usr/src/app/node_modules/mongodb/lib/utils.js:128:55)
completeClose(/usr/src/app/node_modules/mongodb/lib/cursor.js:887:14)
在/usr/src/app/node_modules/mongodb/lib/cursor.js:898:37
如何修复此错误?我认为问题在于,您在
fetchModuleList
[
{
_id:ObjectId("605ff2b1c447c20042445eaf"),
type:'type1',
moduleDetail:[],
},
{
_id:ObjectId("605ff2b1c447c20042445ede"),
type:'type2',
moduleDetail:[],
}
]
import { ModuleSchemaModel } from "../models/module"
export const fetchModuleList= (moduleId:string) => {
return new Promise<ModuleModel[]>((resolve, reject) => {
ModuleSchemaModel.findById(moduleId)
.populate({
path:'moduleDetail',
model:'ModuleDetail'
})
.then((modules:ModuleModel[]) => {
resolve(module)
})
.catch((error:any) => {
console.log(error)
});