В настоящее время я внедряю демонстрационное приложение, чтобы познакомиться с инфраструктурой Nest JS с помощью mongoDB.
В настоящее время я сталкиваюсь со следующим сообщением об ошибке, которое не могу исправить:
не удалось для значения «1» в пути «_id» для модели «Player» + 40997ms CastError: Ошибка приведения к ObjectId для значения «1» в пути «_id» для модели «Player»
Мой контроллер выглядит так:
@Controller('/players')
export class PlayersController {
constructor(private playersService: PlayersService) { }
@Get('/:id')
async getPlayer(@Res() res, @Param('id') id: number) {
const player = await this.playersService.getPlayer(id);
if (!player) throw new NotFoundException('Player does not exist!');
return res.status(HttpStatus.OK).json(player);
}
}
Мой сервис выглядит так:
@Injectable()
export class PlayersService {
constructor(@InjectModel('Player') private readonly playerModel: Model<Player>) { }
async getPlayer(playerId: number): Promise<Player | undefined> {
const player = await this.playerModel.findById(playerId);
return player;
}
}
Мой DTO выглядит так:
export class CreatePlayerDto {
readonly id: number;
readonly name: string;
readonly score: number;
readonly created_at: Date;
readonly is_deleted: boolean;
}
Моя модель выглядит так :
export class Player extends Document {
readonly id: number;
readonly name: string;
readonly score: number;
@Exclude() readonly createdAt: Date;
@Exclude() readonly isDeleted: boolean;
}
Моя схема mon goose выглядит следующим образом:
export const PlayerSchema = new mongoose.Schema({
id: Number,
name: String,
score: Number,
createdAt: { type: Date, default: Date.now },
isDeleted: Boolean
});
Пример записи mongoDB после ввода db.players.find ()
{ "_id" : ObjectId("5e5fccac9d16bf2d325cd57a"), "id" : 1, "name" : "Player One", "score" : 0, "createdAt" : "2020-04-03", "isDeleted" : false }
Что я здесь не так делаю или как я могу исправить эту ошибку?