当前位置: 首页 > 知识库问答 >
问题:

使用forEach和IF使用PUT方法更改电影名称

蔺翰音
2023-03-14
let movies = [
{
    id: 1,
    title: 'Spider-Man',
    duration: 129,
    genre: 'Adventure'
},
{
    id: 2,
    title: 'Toy Story 4',
    duration: 100,
    genre: 'Animation'
},
{
    id: 3,
    title: 'X-Men',
    duration: 113,
    genre: 'Action'
}

router.put(“/movies/:id”,function(req,res){}

但是我不知道在{}里面放什么

共有1个答案

卢伟志
2023-03-14

我不知道在{}里面放什么

包含更新数组的逻辑的代码。

例如:

router.put('/movies/:id', function(req, res, next) {
  try {
    // get id from :id, parse it to an int
    let id = parseInt(req.params.id, 10) || false

    // validate
    if (!id) {
      let err = new Error('Invalid movie id')
      err.status = 422
      throw err
    }

    // find the movie
    let index = movies.findIndex(v => v.id === id)

    if (index === -1) {
      let err = new Error('Movie not found')
      err.status = 404
      throw err
    }

    // seems good, now lets validate body
    let errors = {}

    // id
    if (!req.body.id) {
      errors.id = 'Id is a required field'
    } else if (isNaN(req.body.id)) {
      errors.id = 'Id is invalid, number required'
    }

    //title
    if (!req.body.title) {
      errors.title = 'Title is a required field'
    } else if (req.body.title.length <= 1) {
      errors.title = 'Title too short, enter greater than 1 character'
    } else if (req.body.title.length >= 255) {
      errors.title = 'Title too long, enter less than 255 characters'
    }

    // duration
    if (typeof req.body.duration === 'undefined') {
      errors.duration = 'Duration is a required field'
    } else if (req.body.duration < 0) {
      errors.duration = 'Duration cannot be negative, enter greater than 0 minute'
    } else if (req.body.duration >= 1440) {
      errors.duration = 'Duration too long, enter less than than 1440 minutes (1 day)'
    }

    //genre
    if (!req.body.genre) {
      errors.genre = 'Genre is a required field'
    }

    // has errors
    if (Object.keys(errors).length) {
      let err = new Error('Invlid inputs')
      err.status = 422
      err.errors = errors
      throw err
    }

    //
    movies[index] = {
      id: req.body.id,
      title: req.body.title,
      duration: req.body.duration,
      genre: req.body.genre
    }

    // send success response
    res.json({
      status: 200
    })
  } catch (err) {
    next(err)
  }
})
app.use(function(error, req, res, next) {

  // set response header
  res.status(error.status || 500)

  // is xhr/ajax
  if (req.xhr) {
    res.json(error)
  }
  // not ajax
  else {
    res.render('error', error)
  }
})
 类似资料:
  • 我有一个要求,取决于地图的特定键值,我需要格式化输出。 例如,如果它的值大于1,那么只需要在值(12.23)后面显示2个小数点,或者如果它的值小于1,我需要在它后面显示4个小数点。 我已经编写了代码,它工作正常,但我正在寻找一种更好的方法来做到这一点(基本上我不喜欢我的代码中的其他条件) 这是我的程序,根据最后一个属性键值,我正在格式化输出

  • 问题内容: 我正在尝试在Spring MVC控制器(版本3.0.2)中使用和。在Spring控制器类中,有三种与URL映射的方法,如下所示(分别是PUT,GET和POST,仅用于演示目的)。 加载页面时,该方法将很明显地被调用,但是在所有其他情况下(提交页面时),唯一要调用POST的方法是,永远不会调用用指定的方法。 Spring表单仅包含一个提交按钮和一个图像浏览器, 生成的HTML如下, 在我

  • 问题内容: 我可以在HTML表单中使用PUT方法将数据从表单发送到服务器吗? 问题答案: XHTML 1.x表单仅支持GET和POST。GET和POST是“ method”属性的唯一允许值。

  • 我正在使用shadowJar插件构建/创建我的fatJar。在我的身材里。格雷德尔我有这个 使用gradle shadowJar创建我的胖罐子。然而,创建的胖罐子的名称是一个简单的名称。全部是r100。罐子我想把它改成样本快照。r100部署。罐子如何使用ShadowJar覆盖jar名称。

  • 我想使用Spring数据投影技术,以便仅从表中提取一些字段(而不是表中的所有字段)。 如留档(https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections)中所述,我创建了一个简单的界面,例如: 但我在使用它时遇到了一些问题。 问题1: 首先,我想使用名称findAll()创建一个查询,查找只有两个字