Я не могу обновить другие записи, чем сначала в базе данных через Axios & почтальон - PullRequest
1 голос
/ 07 февраля 2020

по некоторым неизвестным причинам я могу обновить только первую запись в базе данных, даже если я могу получить их все без проблем. Вот как это выглядит: enter image description here Чтобы быть более ясным: имена уникально, поэтому я использую их вместо id, я изменяю url в почтальоне, чтобы обновить какую-то запись, но я могу обновить только первую. То же самое с веб-интерфейсом, в то время как я нажимаю на другой «PAPP», он возвращает мне действительный URL, но недействительные данные ..

Код:

router.put("/:name", (req, res, next) => {
  Papp.findOneAndUpdate({ _pappName: req.params.pappName }, req.body, {
    new: true
  }).then(function(state) {
    res.send(state);
  });
});

Код схемы:

const mongoose = require("mongoose");
const Schema = mongoose.Schema;

const pappSchema = new Schema({
  pappName: {
    type: String,
    required: true
  },
  maintanceName: {
    type: String,
    required: true
  },
  maintanceIsOn: {
    type: Boolean,
    required: true
  },
  autosearchName: {
    type: String,
    required: true
  },
  autosearchValue: {
    type: String,
    required: true
  },
  commentName: {
    type: String,
    required: true
  },
  commentValue: {
    type: String,
    required: true
  }
});

module.exports = Papp = mongoose.model("Papp", pappSchema);

1 Ответ

1 голос
/ 07 февраля 2020

Имя вашего запроса params: name, но вы используете req.params.pappName в своем коде. Поэтому замените req.params.pappName на req.params.name. Также используйте pappName вместо _pappName в запросе фильтра.

router.put("/:name", (req, res, next) => {
  Papp.findOneAndUpdate({ pappName: req.params.name }, req.body, {
    new: true
  }).then(function(state) {
    res.send(state);
  });
});
...