gpt4 book ai didi

javascript - 链式 express 方式

转载 作者:行者123 更新时间:2023-11-30 14:50:43 25 4
gpt4 key购买 nike

我有一个带有 CRUD 方法的 Express 服务器

我希望当 postputdelete 被触发时,get 方法也会运行之后,该 View 在我的前端得到更新

这是我的 routes.js 代码

// ROUTES FOR OUR API
// =============================================================================
var express = require("express"); // call express
var NouvProj = require("../app/models/nouvProj");
var mongoose = require("mongoose");

var router = express.Router(); // get an instance of the express Router

router.use(function(req, res, next) {
next(); // make sure we go to the next routes and don't stop here
});

// test route to make sure everything is working (accessed at GET http://localhost:8080/api)
router
.route("/projets")

// create a nouvProj (accessed at POST http://localhost:8080/api/nouvProjs)
.post(function(req, res, next) {
var nouvProj = new NouvProj();
// create a new instance of the nouvProj model

nouvProj.nomProj = req.body.nomProj;
nouvProj.leadProj = req.body.leadProj;
nouvProj.descProj = req.body.descProj;
nouvProj.BesProj = req.body.BesProj;
nouvProj.pers = req.body.pers;
nouvProj.backlog.fonctionnalite = req.body.Fonctionnalite;
nouvProj.backlog.userStory = req.body.UserStory;
// save the nouvProj and check for errors
nouvProj.save(function(err) {
if (err) {
res.send(err);
console.log("err");
}
res.json({
message: "nouvProj created!"
});
});
next();
})

.get(function(req, res) {
NouvProj.find(function(err, nouvProj) {
if (err) res.send(err);
else {
res.json(nouvProj);
console.log(req.io);
}
});
});
router
.route("/nouvProjs/:nouvProj_id")

// get the nouvProj with that id (accessed at GET http://localhost:8080/api/nouvProjs/:nouvProj_id)
.get(function(req, res) {
//console.log(req.params.nouvProj_id);
NouvProj.findById(req.params.nouvProj_id, function(err, nouvProj) {
if (err) {
res.send(err);
} else {
//console.log(nouvProj);

res.json(nouvProj);
}
});
})
.put(function(req, res) {
NouvProj.findById(req.params.nouvProj_id, function(err, nouvProj) {
if (err) res.send(err);
nouvProj.nomProj = req.body.nomProj;
nouvProj.leadProj = req.body.leadProj;
nouvProj.descProj = req.body.descProj;
nouvProj.BesProj = req.body.BesProj;
nouvProj.pers = [{ name: req.body.name, poste: req.body.poste }];
nouvProj.backlog.fonctionnalite = req.body.Fonctionnalite;
nouvProj.backlog.userStory = req.body.UserStory;

nouvProj.save(function(err) {
if (err) res.send(err);

res.json({
message: "nouvProj updated!"
});
});
});
})

.delete(function(req, res) {
NouvProj.remove(
{
_id: req.params.nouvProj_id
},
function(err, nouvProj) {
if (err) res.send(err);

res.json({
message: "Successfully deleted"
});
}
);
});
module.exports = router;

如果没有 next() 中间件,我的应用程序将发布和获取数据。但是当我添加 next() 时:

Error: Can't set headers after they are sent.

从这部分代码开始:

  res.json({
message: "nouvProj created!"
});
});
next();

我如何解决这个问题并能够在每次添加数据时更新 get 方法?

最佳答案

您不能对一个请求发送多个响应,这不是 HTTP 的工作方式,这就是您收到错误的原因。

大多数人使用这样的 API 有两种方式。要么只返回带有 POST 响应的对象(例如 res.json({ message: 'Success!', project: nouvProj });),要么让客户端在获得成功响应。

关于javascript - 链式 express 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48143169/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com