Как создать URL-адрес мультисайта для хранения конкретной информации на конкретном сайте, используя mongoose - PullRequest
0 голосов
/ 09 апреля 2019

В моем приложении есть опция под названием «создать сайт», которая создаст URL нового сайта.Поэтому проблема в том, что у меня так много коллекций, и мне нужно показывать связанные данные на связанном сайте.

Как администратор, я могу создавать любое количество сайтов, которые будут содержать так много опций, таких как «Создать пользователя»."," моя учетная запись "," создать проект "," настройки "и т. д. (в Navbar).Поэтому, выбирая эти параметры, он должен получить данные, относящиеся к этому параметру и этому сайту ...

Для лучшего понимания, например: В моем приложении предположим, если я создаю URL-адрес нового сайта, например, "www.mywebsite/new-website" -- этот URL-адрес является новым веб-сайтом, по умолчанию он не содержит никаких данных, все параметры, такие как «создать пользователя, создать проект и т. д.», будут содержать данные, только если я добавлю некоторые данные.

Iсоздаст другой URL-адрес сайта, например "www.mywebsite/new-website1" - изначально никакие данные не будут представлены, после добавления, которые будут иметь связанную информацию.

В MongoDB, как мне добиться этого, используя одну базу данных?поэтому я использую приложение стека MEAN, мне нужно решение о том, как реализовать этот сценарий, может ли кто-нибудь помочь мне получить четкое представление об использовании MongoDB в такой ситуации, которая будет оценена по достоинству.

Спасибо!

1 Ответ

0 голосов
/ 16 апреля 2019

Используя экспресс-маршруты, простой способ заключается в том, чтобы вложить маршрутизаторы, подключив их в качестве промежуточного ПО на другом маршрутизаторе.

Таким образом, вы можете создать коллекцию для веб-сайтов и использовать 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-запрос для созданиявеб-сайты, пользователи в адаптивных маршрутах и ​​достаточные полномочия должны быть проверены перед предоставлением доступа к маршрутам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...