模型“用户”的路径“_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 失败是啥?

CastError:模型的路径“_id”处的值“:id”转换为 ObjectId 失败