Есть ли быстрый или короткий синтаксис для отдельного получения содержимого req.body? - PullRequest
1 голос
/ 07 июля 2019

Я хочу сохранить author_id из req, который не является частью формы, а является одним из параметров переменной в URL.

В настоящее время я добавляю параметры формы отдельно от req.body & author_id из req.user._id и создаю новый объект, комбинируя два вышеупомянутых.

router.post("/", middleware.isLoggedIn, function(req, res){
  // get data from form and add to campgrounds array
  var name = req.body.name;
  var image = req.body.image;
  var desc = req.body.description;
  var author = { //not a part of req.body but I want to add it in new object
      id: req.user._id,
      username: req.user.username
  }
  var price = req.body.price;
    var location = req.body.location;
    var newCampground = {name: name, image: image, description: desc, price: price, author:author, location: location};
    Campground.create(newCampground, function(err, newlyCreated){
        if(err){
            console.log(err);
        } else {
            res.redirect("/campgrounds");
        }
    });
  });

Мне нужен более короткий формат или способ сделать это, потому что в будущем данные из req.body могут увеличиться, и я бы не хотел извлекать все по отдельности и комбинировать его с моим авторским ключом.

1 Ответ

0 голосов
/ 07 июля 2019

С ES6 вы можете деструктурировать и использовать сокращенные имена свойств:

const { name, image, description, price, location, user } = req.body;
const author = { id: user._id, username: user._username };
const newCampground = { name, image, description, price, location, author };

// or, without the intermediate `author` variable:

const newCampground = { name, image, description, price, location, author: { id: user._id, username: user._username } };

Если вы не хотите повторять все не user свойства в req.body дважды, вы можете использовать что-то вроде pick:

Lodash
const { user } = req.body;
const newCampground = {
  ..._.pick(req.body, ['name', 'image', 'description', 'price', 'location', 'user']),
  author: { id: user._id, username: user._username }
};
...