模型“用户”的路径“_id”处的值“ id: '5f1c64aa177bf9379491ecc8'”转换为 ObjectId 失败
Posted
技术标签:
【中文标题】模型“用户”的路径“_id”处的值“ id: \'5f1c64aa177bf9379491ecc8\'”转换为 ObjectId 失败【英文标题】:Cast to ObjectId failed for value " id: '5f1c64aa177bf9379491ecc8' " at path "_id" for model "User"模型“用户”的路径“_id”处的值“ id: '5f1c64aa177bf9379491ecc8'”转换为 ObjectId 失败 【发布时间】:2020-11-16 16:38:52 【问题描述】:我正在尝试使用 Nestjs 制作简单的 todoapp。
我有两个模块,一个是用户和任务。任务模块工作正常,我可以添加新任务,findbyId 方法工作正常。我可以添加新用户,但是当我尝试在用户模型中查找 findbyId 时,会发生 "statusCode":500,"message":"Internal server error"
错误。
user.schema.ts:
export const UserSchema = new mongoose.Schema(
email: type:String,
nickname:type:String, required:[true, 'Nickname is required'],
password:type:String, required:[true, 'Password is required'],
tasks: type:Array ,
updateAt:type:Date, default:Date.now,
)
user.service.ts:
async getOne(id:string): Promise<User>
return await this.userModel.findById(id).exec();
task.schema.ts
export const TaskSchema = new mongoose.Schema(
title: type:String, required:true,
user: type:String ,required:true,
description: type:String, required:false,
category: type:String,required:true,
updateAt:type:Date, default:Date.now
)
task.service.ts
async getOne(id: string): Promise <Task>
return await this.taskModel.findById(id).exec();
感谢您的宝贵时间!
【问题讨论】:
【参考方案1】:似乎getOne
方法中的id
值实际上不是字符串,而是包含以下内容的对象:
id: '5f1c64aa177bf9379491ecc8'
因此,您可以将其更改为使用实际的 id
调用 findById
:
async getOne(idHolder: any): Promise <Task>
return await this.taskModel.findById(idHolder.id).exec();
【讨论】:
发送问题后,我意识到我没有像这样在 user.controller.ts 中传递 id @Get(':id') getOne(@Param('id' ) id: string) return this.userService.getOne(id); 但感谢您的回答,它也有效!以上是关于模型“用户”的路径“_id”处的值“ id: '5f1c64aa177bf9379491ecc8'”转换为 ObjectId 失败的主要内容,如果未能解决你的问题,请参考以下文章
模型“用户”的路径“_id”处的值“ id: '5f1c64aa177bf9379491ecc8'”转换为 ObjectId 失败
Mongoose CastError:模型“Post”的路径“_id”处的值“未定义”转换为 ObjectId 失败
对于模型的路径“_id”处的值,转换为 ObjectId 失败
模型的路径“_id”处的值“”转换为 ObjectId 失败
对于模型“Product”的路径“_id”处的值“ascendPrice”,Cast to ObjectId 失败是啥?