Повторно использовать методы POST и GET в Express - PullRequest
0 голосов
/ 13 сентября 2018

Я создаю CMS, где мне приходится делать много запросов POST и GET к моей MongoDB. Проблема, с которой я сейчас сталкиваюсь, заключается в том, что чем больше я работаю с моей CMS, тем больше запросов POST и GET мне приходится выполнять, и в конечном итоге в моем приложении появляется много двойного кода. У меня вопрос, могу ли я как-нибудь повторно использовать методы POST и GET? Я использую Express Framework, MongoDB и Angular на Front-End.

Вот пример того, как выглядит мое приложение:

Экспресс:

router.post('/news_blocks', function(req, res, next){
  var randomNumber = Math.floor(1000 + Math.random() * 9000);
  var news_image = req.files.myImage;
  news_image.mv('/home//projects/website/public/uploads/' + 'image_' + randomNumber + '.jpg' , function(err) {
    if(err){
      console.log(err);
    }else{
      var data = new news_blocks(postOptions(req, randomNumber));
      saveToDB(data,res);
     }
  });
});

router.post('/research', function(req, res, next){
  var randomNumber = Math.floor(1000 + Math.random() * 9000);
  var research_image = req.files.myImage;
  research_image.mv('/home/projects/website/public/uploads/' + 'image_' + randomNumber + '.jpg' , function(err) {
    if(err){
      console.log(err);
    }else{
      var data = new research_blocks(postOptions(req, randomNumber));
      saveToDB(data,res);
     }
  });
});

postOptions = function(req, randomNumber){
  var options = {
    title: req.body.title,
    date: new Date,
    message: req.body.message,
    image: 'image_' + randomNumber
  };
  return options;
};

Модель MongoDB:

file1:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var research_block = new mongoose.Schema({
  title: String,
  date: String,
  message: String,
  image: String
}, {collection: 'research'});

module.exports = mongoose.model("research", research_block);

Файл 2:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var news_block = new mongoose.Schema({
  title: String,
  date: String,
  message: String,
  image: String
}, {collection: 'news'});

module.exports = mongoose.model("news", news_block);

Как видите, в методах POST много одинакового кода. Но я не уверен, как сделать это более СУХОЙ

1 Ответ

0 голосов
/ 13 сентября 2018

Предложение 1:
Сделайте файл контроллера для каждой таблицы. И, напишите функции в нем, чтобы сделать все виды операций в нем. И, при вызове службы, отправьте тип операции вместе с ней. На основе типа вы можете вызывать любую функцию, какую захотите.
Предложение 2:
Попробуйте использовать GraphQL

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