Экспресс + ПН goose. Как получить всю коллекцию резервных копий с такими же параметрами "hidenId"? - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть MongoDB backups коллекция:

[
  {
    "_id": "5e34554a48950d415c59bd9a",
    "recipeNameBackup": "Borsh",
    "recipeDescriptionBackup": "adafafafafascva",
    "hidenId": "_mgeaf5ke1sg",
    "cookingTimeBackup": 1,
    "dateBackup": "2020-01-31T16:26:37.492Z",
    "createdAt": "2020-01-31T16:26:50.273Z",
    "updatedAt": "2020-01-31T16:26:50.273Z",
    "__v": 0
  },
  {
    "_id": "5e34559048950d415c59bd9b",
    "recipeNameBackup": "Goroh",
    "recipeDescriptionBackup": "NORMAL adafafafafascva",
    "hidenId": "_mgeaf5ke1sg",
    "cookingTimeBackup": 1,
    "dateBackup": "2020-01-31T16:26:37.492Z",
    "createdAt": "2020-01-31T16:28:00.118Z",
    "updatedAt": "2020-01-31T16:28:00.118Z",
    "__v": 0
  },
  {
    "_id": "5e34633c48950d415c59bd9e",
    "recipeNameBackup": "Sup",
    "recipeDescriptionBackup": "NORMAL adafafafafascva",
    "hidenId": "_ssdds233dfg",
    "cookingTimeBackup": 1,
    "dateBackup": "2020-01-31T16:26:37.492Z",
    "createdAt": "2020-01-31T17:26:20.524Z",
    "updatedAt": "2020-01-31T17:26:20.524Z",
    "__v": 0
  }
]

Я посылаю GET req от клиента с hidenId параметрами

http://localhost:5000/backups/_mgeaf5ke1sg`

и должен вернуть все резервные копии, которые имеют тот же "hidenId": "_ssdds233dfg"

Как записать этот GET-запрос в роутер? Теперь у меня есть следующие маршруты:

const router = require("express").Router();
let Backup = require("../models/backup.model");

router.route("/").get((req, res) => {
  Backup.find()
    .then(recipes => res.json(recipes))
    .catch(err => res.status(400).json("Error: " + err));
});

//Backup route
router.route("/add").post((req, res) => {
  const recipeNameBackup = req.body.recipeNameBackup;
  const recipeDescriptionBackup = req.body.recipeDescriptionBackup;
  const hidenId = req.body.hidenId;
  const cookingTimeBackup = Number(req.body.cookingTimeBackup);
  const dateBackup = Date.parse(req.body.dateBackup);

  const newBackup = new Backup({
    recipeNameBackup,
    recipeDescriptionBackup,
    hidenId,
    cookingTimeBackup,
    dateBackup
  });

  newBackup
    .save()
    .then(() => res.json("Backup recipe added!"))
    .catch(err => res.status(400).json("Error: " + err));
});


module.exports = router;

1 Ответ

0 голосов
/ 01 февраля 2020

Вы можете принять параметр маршрута, добавив префикс части маршрута к :.

. Этот параметр будет доступен в объекте req.params.

Затем вы можете используйте параметр в вашем запросе для получения соответствующих документов:

router.route("/:hidenId").get((req, res) => {
  Backup.find({ hidenId: req.params.hidenId })
    .then(recipes => res.json(recipes))
    .catch(err => res.status(400).json("Error: " + err));
});

Это предполагает, что ваш маршрутизатор загружен на /backups, что делает этот маршрут эффективным /backups/:hidenId.

...