Спрятать внешние ссылки из БД на фронте?

Для того чтобы скрыть внешние ссылки из базы данных на фронтэнде в Nuxt.js, существует несколько подходов и методов. Я расскажу о двух самых распространенных способах.

1. Фильтрация на сервере (Backend Filtering).
Этот подход заключается в фильтрации данных на сервере перед их передачей на фронтэнд. Вы можете создать API-маршрут в вашем серверном коде (например, в файле index.js в папке api/):

   const express = require('express');
   const app = express();
   
   app.get('/api/links', (req, res) => {
     // Здесь вы можете получить ссылки из БД (например, из MongoDB)
   
     // Производим фильтрацию ссылок 
     const filteredLinks = links.map(link => {
       // Проверяем, является ли ссылка "внутренней"
       if (isInternalLink(link)) {
         return link;
       }
     });
   
     res.json(filteredLinks);
   });

Затем в Nuxt.js вы можете получить список фильтрованных ссылок с использованием метода fetch встроенного в фреймворк:

   async fetch() {
     const { data } = await this.$axios.$get('/api/links');
     this.links = data;
   }

Это позволит вам получить только "внутренние" ссылки с сервера.

2. Фильтрация на клиенте (Client Filtering).
Если вам нужно отображать все ссылки на фронтэнде, но просто скрыть "внешние" ссылки, вы можете использовать клиентскую фильтрацию. Для этого вы можете отфильтровать данные полученные с сервера с помощью методов массива JavaScript, таких как filter и map.

   async fetch() {
     const { data } = await this.$axios.$get('/api/links');
     this.links = data.filter(link => {
       // Проверяем, является ли ссылка "внутренней"
       return isInternalLink(link);
     });
   }

В этом случае все ссылки все еще передаются на фронтэнд, но только "внутренние" ссылки отображаются на вашем сайте.

В обоих подходах функция isInternalLink() - это функция, которую вы должны реализовать, чтобы проверить, является ли ссылка "внутренней". Это может быть проверка на основе домена, регулярного выражения или любого другого логического условия.

Какой подход выбрать зависит от вашей конкретной ситуации и требований проекта. Если вам требуется скрыть ссылки для повышения безопасности или оптимизации производительности, фильтрация на сервере может быть предпочтительной. Если вам просто нужно скрыть "внешние" ссылки на фронтэнде, клиентская фильтрация может быть более простым и эффективным решением.