【发布时间】:2020-07-06 06:30:53
【问题描述】:
个人信息.js
var express = require("express"),
router = express.Router(),
personalinfo = require("../models/personalinfo");
// To show PersonalInfo
router.get("/new", function(req, res) {
res.render("personalinfo/new");
});
// To create personalInfo date
router.post("/new", function(req, res) {
const personalInfo = req.body.personalinfo;
console.log(personalInfo);
personalinfo.create(req.body.personalinfo, function(err, ninfo) {
if (err) {
res.send(err);
} else {
res.redirect("/objective/new");
}
});
});
module.exports = router;
obj.js
var express = require("express"),
router = express.Router(),
objective = require("../models/objective");
router.get("/new", function(req, res) {
res.render("objective/new");
});
router.post("/new", function(req, res) {
objective.create(req.body.objective, function(err, nobj) {
if (err) {
res.send(err);
} else {
res.send(nobj);
}
});
});
module.exports = router;
从personalinfo.js 路由文件中,我想在obj.js 路由文件中使用personalInfo 变量。我怎样才能做到这一点。谢谢你帮助我。 :)
【问题讨论】:
-
请不要将两个变量命名为
personalinfo和personalInfo,这两个变量的不同之处在于很难看到。这只是一个不好的做法。我只是浪费了一些时间来回答你的问题,直到我意识到你有两个看起来几乎相同的独立变量。它只会使您的代码混乱且难以阅读。 -
而且,不,您不能直接与另一条路线共享在一条路线中创建的变量。您的服务器是一个多用户服务器,可供许多不同的用户使用。因此,您不能将 ONE 用户的数据存储到变量中,并期望它在未来的某个路线上仍然存在。相反,您通常会使用
express-session之类的东西,并将该用户的状态存储在他们的会话对象中,然后您可以从未来的路由访问。 -
另外,您应该非常非常小心地为用户存储什么状态。当 Web 服务器尽可能无状态时,它们会更简单且更具可扩展性。通常,您希望将状态保留在客户端或 URL(用于暂时性事物)或数据存储中的更永久数据,而不是在服务器的内存中。
-
要回答您关于将一些数据从一条路线移动到另一条路线的最佳整体架构的问题,我们需要知道您在这两条路线中真正想要做什么。如果它只是呈现下一页所需的一些时间状态,那么最好将其设置为重定向 URL 上的查询参数,以便下一个路由可以从 URL 访问它。这完全是无状态且简单的。
标签: javascript html jquery node.js express