【问题标题】:Error: Cast to undefined failed for value undefined at path "undefined"错误:对于路径“未定义”处未定义的值,转换为未定义失败
【发布时间】:2022-06-16 16:52:20
【问题描述】:

我是一名初级 JavaScript 开发人员。 当我尝试通过路线获取所有士兵时出现此错误:POSTMAN 中的“localhost:3005/api/v1/soldiers”。

我为 HomePost、服务、控制器和路由编写了架构,并使用了 mongoose 发送任何请求时,一切正常。按 ID 查找、按 ID 删除、创建首页帖子、获取首页帖子列表。 我开始为士兵编写类似的架构、服务、控制器和路由。

models/sordier.model.js

import mongoose from 'mongoose'

const Soldier = new mongoose.Schema({
  title: {
    type: String,
    required: true
  },
  image: {
    type: String,
    required: true
  },
  rank: {
    type: String,
    required: true
  }, 
  status: {
    type: String,
    default: '1'
  },
  created_at: {
    type: Date,
    default: new Date()
  },
  updated_at: {
    type: Date,
    default: new Date()
  }
})

export default mongoose.model('Soldier', Soldier)
services/soldiers.service.js

export const getSoldiers = async ({
  offset = 0,
  limit = 9
}) => Soldier.find({}, null, {
  skip: parseInt(offset),
  limit: parseInt(limit)
})
api/soldiers/soldiers.controller.js

export const SoldiersListController = async (request, response, next) => {

  try {
    const { offset, limit } = request.query
    
    const soldiers = await getSoldiers({
      offset,
      limit
    })

    return response
      .status(200)
      .json({
        status: true,
        soldiers: Array.isArray(soldiers) 
          ? soldiers?.map(soldier => SoldiersListItemMapper(soldier)) 
          : []
      })
  } catch (error) {
    console.log(error);
    next(error)
  }
  
  return response
    .status(200)
    .json({
      success: true,
      data
    })
}
api/index.js

import { Router } from 'express'
import HomeRoute from './home'
import SoldiersRoute from './soldiers'

export default () => {
  const router = Router()

  HomeRoute(router)
  SoldiersRoute(router)
  
  return router
}

使用 POSTMAN,我确保该功能有效: 创建一个士兵,通过 ID 获取一个,通过 ID 删除一个,但是获取士兵列表不起作用。

我发现错误: 错误:对于路径“未定义”处的未定义值,转换为未定义失败

我能做什么?

【问题讨论】:

  • 嗨,这描述得很好!我能否请您详细说明“在这个阶段我无法在控制台中收到请求”。究竟是哪里抛出的错误?
  • 感谢您的回复!在 POSTMAN 中,我在路由上发送了一个 GET 请求:“localhost:3005/api/v1/soldiers”然后我收到了写在这篇文章标题中的错误
  • 你能得到错误的堆栈跟踪吗?例如。在你的 catch 子句中,看看你是否可以将错误打印到控制台。
  • 你如何确定错误来自 SoldiersListController?

标签: node.js mongoose


猜你喜欢
  • 2018-03-17
  • 2021-03-13
  • 1970-01-01
  • 2016-05-01
  • 2016-02-23
  • 2018-03-16
  • 2021-05-13
  • 2021-06-02
  • 2015-11-16
相关资源
最近更新 更多