Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js MongooseError[MissingSchemaError]:模式没有';“未注册型号”;ModuleDetail“;_Node.js_Mongodb_Typescript_Mongoose - Fatal编程技术网

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)
        });