如何创建多站点URL以使用猫鼬将特定信息存储到特定站点

时间:2019-04-09 09:53:24

标签: node.js mongodb express mongoose

在我的应用程序中,有一个名为“创建站点”的选项,它将创建一个新的站点URL。所以问题是我有很多馆藏,我需要向相关站点显示相关数据。

作为管理员,我可以创建任意数量的网站,其中包含许多选项,例如“创建用户”,“我的帐户”,“创建项目”,“设置”等(在Navbar中)。因此,在选择这些选项时,它应该获取与该选项和该站点相关的数据...

例如,为了更好地理解,例如:在我的应用程序中,假设我创建一个新的网站URL,例如"www.mywebsite/new-website"-该URL是一个新网站,默认情况下它不包含任何数据,所有选项都类似于“ create用户,创建项目等。”仅当我添加一些数据时才会有数据。

我将创建另一个网站网址,例如"www.mywebsite/new-website1"-在添加相关信息后,最初不会显示任何数据。

在MongoDB中,如何使用单个数据库实现此目的?所以我正在使用MEAN堆栈应用程序,我需要一个有关如何实现此方案的解决方案,有人可以帮助我清楚了解这种情况下MongoDB的使用情况。

谢谢!

1 个答案:

答案 0 :(得分:0)

通过使用快速路由,一种简单的方法是通过将路由器作为中间件附加到其他路由器上来嵌套路由器。

通过这种方式,您可以拥有网站的集合,并在所有其他集合中将websiteId用​​作参考。

因此路线变为:

GET /-> hello websites

GET /new-website-> Hello from Website : new-website

GET /new-website/users-> List users from website : new-website

GET /new-website/users/101-> Hello User : 101 from website : new-website

var express = require("express");
var app = express();

var siteRouter = express.Router();
// you need to set mergeParams: true on the router,
// if you want to access params from the parent router
var userRouter = express.Router({ mergeParams: true });

// you can nest routers by attaching them as middleware:
siteRouter.use("/:sitename/users", userRouter);

siteRouter.route("/").get(function(req, res) {
  res.status(200).send("hello websites");
});

siteRouter.route("/:sitename").get(function(req, res) {
  res.status(200).send("Hello from Website : " + req.params.sitename);
});

userRouter.route("/").get(function(req, res) {
  res.status(200).send("List users from website " + req.params.sitename);
});

userRouter.route("/:userId").get(function(req, res) {
  res
    .status(200)
    .send(
      "Hello User : " + req.params.userId + " from website :" + req.params.sitename
    );
});

app.use("/", siteRouter);

app.listen(3000);

注意:-我只添加了GET请求,使用POST请求创建网站,响应式路由中的用户,并且在访问路由之前必须检查足够的授权。