[Mongoose]CastError: 스키마 타입

박민하·2023년 1월 14일
0

ERROR & DEBUG

목록 보기
29/30
post-custom-banner

CastError: Cast to Number failed for value "6375ce0cfa8e8a3ad6f43be8" (type string) at path "user" for model "Post"

문제

포스팅한 유저 _id를 받아오지 못함.

//models.post.js
const mongoose = require('mongoose');

const postSchema = new mongoose.Schema({
    _id: {
      	type: Number
    },
    user: {
        type: String,
        required: true
    },
   	...
},  { versionKey : false } )

const Post = mongoose.model('Post', postSchema);

module.exports = Post;
//routes.controller.js
const postModel = require('../models/post');

postModel.find({user:req.user._id});

해결

  1. models.post.js 파일에서 _id 필드는 정의하지 않는다고 한다. 그래서 삭제.

  2. _id 필드의 타입은 ObjectId 타입이다. user 필드의 타입을 String이 아닌 ObjectId 타입으로 바꿔야 한다.

//models.post.js
const mongoose = require('mongoose');

const postSchema = new mongoose.Schema({
    user: {
        type: mongoose.Schema.Types.ObjectId,
        required: true
    },
  	...
},  { versionKey : false } )

const Post = mongoose.model('Post', postSchema);

module.exports = Post;

요약

mongoose schema 필드 타입을 잘못 정의해서 발생한 문제.

profile
backend developer 🐌
post-custom-banner

0개의 댓글