JavaScript - экспресс - MongoDb - Mongoose findOneAndUpdate возвращает неопределенное значение - PullRequest
0 голосов
/ 19 февраля 2019

Итак, я пытаюсь обновить элемент в моей базе данных mongodb, но он не работает, и для ключевого слова error установлено значение undefined.Я, вероятно, делаю что-то очень неправильное, но вот функция обновления:

router.post("/file/:id/edit", (req, res) => {
  var id = req.params.id;
  File.findOneAndUpdate( {"_id": id} , req.body, (err) => {
  if (err) return res.json({ success: false, error: err });
    return res.json({ success: true });
  });
});

Функция, которая вызывает это:

export function updateFile(file) {
  var objIdToUpdate = file["id"];
  var myUpdate = axios.post("http://localhost:3001/api/file/:" + objIdToUpdate + "/edit", {
        title: file.title,
        author: file.author,
        dateCreated: file.dateC,
        dateModified: file.dateModified,
        size: file.size,
        type: file.type,
        tags: file.tags
  });
  return myUpdate;
}

Моя схема:

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

const FileSchema = new Schema(
  {
    title: String,
    author: String,
    dateCreated: String,
    dateModified: String,
    size: String,
    type: String,
    tags: []
  },
  { timestamps: true }
);

module.exports = mongoose.model("File", FileSchema, "files");

Когда я пытаюсь напечатать ключевое слово "err", оно просто не определено.Почему это не работает для изменения значений в моей базе данных, что пошло не так?

1 Ответ

0 голосов
/ 19 февраля 2019

В вашей функции обратного вызова findOneAndUpdate err всегда имеет значение, лучше, если вы используете then и ловите с такими обещаниями:

File.findOneAndUpdate({ "_id":  req.params.id}, { req.body },{returnNewDocument: true})
    .then((resp) => { res.send(resp) })
    .catch((err) => { res.send(err) });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...