提问者:小点点

错误:无法POST/API/成功


我正在尝试发送一个POST请求,但它似乎是路由不工作的基础上的错误。 但是,我在控制台中记录了req.body.entries的值,因此它必须正常工作。 当我发送一个GET请求时,浏览器就坐并加载。 同样的事情也发生在邮差身上。 我试图弄清楚为什么我在POST请求上得到一个错误,而get请求处于静止状态。 提前谢谢你。

index.js

const successRoute = require("./routes/success");
app.use("/api/success", successRoute);

成功。js

router.get(
  "/",
  basicAuth({
    users: { username: "password" },
  }),
  async function (req, res) {
    try {
      const entry = await Entry.find({});
      res.sendStatus(entry);
    } catch (err) {
      res.sendStatus({ msg: "oops something went wrong" });
    }
  }
);

router.post("/", async (req, res, next) => {
  try {
    //console.log(req.body);
    const { store, entries } = req.body;
    Entry.findOneAndUpdate(
      { _id: store },
      { $set: { entries: +req.body.entries } },
      { new: true },
      (err, doc) => {
        if (err) {
          console.log(err);
        }

        console.log(req.body.entries);
        next();
      }
    );
  } catch (err) {
    const entry = new Entry({
      _id: store,
      entries: req.body.entries,
    });

    await entry.save();
    res.sendStatus(200);
    next();
  }
});

共1个答案

匿名用户

我认为问题在于,在router.post()中,您没有发送任何响应,您只调用next()。 我看不出该请求的下一个路径。

我推荐这样的东西:

router.post("/", async (req, res, next) => {
  try {
    //console.log(req.body);
    const { store, entries } = req.body;
    Entry.findOneAndUpdate(
      { _id: store },
      { $set: { entries: +req.body.entries } },
      { new: true },
      (err, doc) => {
        // throw the error and catch later
        if (err)
          throw err;

        console.log(req.body.entries);

        // send response instead of calling next()
        res.sendStatus(200);
      }
    );
  } catch (err) {
    const entry = new Entry({
      _id: store,
      entries: req.body.entries,
    });

    await entry.save();

    // send response 
    res.sendStatus(200);
    // next(); // don't call next unless next route defined 
  }
});