遭遇ObjectParameterError:Document()的obj参数需为对象,却得到membersDto类
错误原因定位与解决方案
核心问题
错误ObjectParameterError: Parameter "obj" to Document() must be an object, got class membersDto { }的本质是:你在创建Mongoose文档时,直接传入了membersDto类本身,而非该类的实例对象。Mongoose的Document()构造函数要求接收普通对象或类实例,不能直接传递类的定义。
结合你的Schema代码分析
你的memberAddress Schema定义存在两处规范问题(虽非当前错误直接诱因,但需修正):
- 类名不符合TypeScript大驼峰命名规范,建议改为
MemberAddress - 字段
memver_id拼写错误,应为member_id
解决步骤
确保创建文档时传入类实例或普通对象
错误示例(触发报错):// 错误:直接传递类,而非实例 const memberDoc = new MemberDocument(membersDto);正确写法:
// 方式1:先创建membersDto实例再传入 const memberDtoInstance = new membersDto(); memberDtoInstance.member_id = "user_123"; const memberDoc = new MemberDocument(memberDtoInstance); // 方式2:直接传入包含对应字段的普通对象 const memberDoc = new MemberDocument({ member_id: "user_123", city_id: "city_456", address: "xxx街道xxx号" });修正Schema中的拼写与命名规范
修正后的完整Schema代码:import * as mongoose from 'mongoose'; import { HydratedDocument, Schema, Prop, SchemaFactory } from '@nestjs/mongoose'; export class MemberAddress { @Prop() member_id: string; @Prop() city_id: string; @Prop() state_id: string; @Prop() pincode: number; @Prop() address: string; } export type MemberDocument = HydratedDocument<MemberAddress>; export const memberAddressSchema = SchemaFactory.createForClass(MemberAddress);确认依赖导入完整
确保已从@nestjs/mongoose正确导入Schema、Prop、SchemaFactory(原代码未显示导入,可能存在遗漏)。
内容的提问来源于stack exchange,提问作者jaswant patel
相关产品推荐
相关产品推荐

