NodeJs & Mongodb: невозможно обновить (патч). Возвращает Успех, но ничего не меняет - PullRequest
0 голосов
/ 02 мая 2019

Я пытался обновить мои «Заказы», ​​в которых указаны продукт, количество и _id. После того, как я запустил патч, он вернется к успеху, но ничего не изменит. Снимок экрана с кодом обновления моего API

Код исправления / обновления здесь . Я новичок, поэтому у меня не может быть встроенного изображения

Почтальон Снимок экрана: здесь я использую тело в почтальоне, чтобы сохранить объект и исправить его. Это мой скриншот теста API POSTMAN

Моя модель заказов

Модель заказов

Патч-код:

router.patch('/:id',(req,res)=>{
  var update = {};
  for(var up of req.body)
  {
    update[up.new]=up.value
  }
  console.log(update )
  Product.update({_id:req.params.id},{$set:update})
    .exec()
    .then(result=>{
    res.status(200).json(
      {
        Message:'Product Updated',
        Request:{
          type:'GET',
          url:'http://localhost:5000/orders/'+req.params.id
        }
      }
    )
  })
    .catch(err=>{
    res.status(500).json(err)
    console.log(err)
  })
})

Код модели

var express = require('express') var mongoose = require('mongoose'); 
var orderSchema = mongoose.Schema({
  _id:mongoose.Schema.Types.ObjectId,
  product:{type:String, required:'true'},
  quantity:{type:Number,default:1}
})

module.exports = mongoose.model('Order',orderSchema,'Order');

1 Ответ

0 голосов
/ 02 мая 2019

Во-первых, вам не нужно указывать _id в своей схеме mongoose, MongoDB создаст его автоматически для вас также с индексом версии. Проблема может быть только в этом.

Если он возвращает успех, но не влияет ни на одну запись, это означает, что запись не была найдена в первую очередь. При выполнении Product.update({_id:req.params.id},{$set:update}) модель не найдена. Может быть попробовать: {_id: req.params.id.toString()}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...