mongoose findByIdAndUpdate有时可以工作,有时不能

blmhpbnm  于 2023-01-09  发布在  Go
关注(0)|答案(2)|浏览(106)

我试图更新两个文件在mongoose,但我不断得到
未处理承诺拒绝警告:TypeError:无法读取未定义""的属性"_id"
但有时候很管用。我做错什么了?

const Installateurs = require("../../Models/Installateurs.js");
const Opdrachten = require("../../Models/Opdracht.js");

const verzendOpdrachtNaarInstallateur = (req, response) => {

  Opdrachten.findByIdAndUpdate(req.body._id, req.body).then((result) => {
    const id = result.installateurs[0]._id;

    Installateurs.findById(id).then((res) => {
      res.opdrachten.push(result._id);
      res.huidigeOpdracht.push(result._id);

      console.log(res);

      Installateurs.findByIdAndUpdate(id, res, { new: true })
        .then((updatedInstal) => {
          response.json(updatedInstal);
        })
        .catch((err) => console.log(err));
    });
  });
};

module.exports = verzendOpdrachtNaarInstallateur;
pdkcd3nj

pdkcd3nj1#

不确定,但我想这是因为你没有处理错误。试试这个

const Installateurs = require("../../Models/Installateurs.js");
const Opdrachten = require("../../Models/Opdracht.js");

const verzendOpdrachtNaarInstallateur = (req, response) => {

  Opdrachten.findByIdAndUpdate(req.body._id, req.body).then((result) => {
    const id = result.installateurs[0]._id;

    Installateurs.findById(id).then((res) => {
      res.opdrachten.push(result._id);
      res.huidigeOpdracht.push(result._id);

      console.log(res);

      Installateurs.findByIdAndUpdate(id, res, { new: true })
        .then((updatedInstal) => {
          response.json(updatedInstal);
        })
        .catch((err) => console.log(err));
    });
  }).catch((err) => console.log(err));
};

module.exports = verzendOpdrachtNaarInstallateur;
3wabscal

3wabscal2#

从代码中我可以看出,看起来像:
Opdrachten.findByIdAndUpdate未返回result.installateurs属性

您的Installateurs.findById正在返回undefined
我只能从代码的上下文中判断出来。

相关问题