Добавление userId в экспресс-узел после запроса - PullRequest
0 голосов
/ 05 мая 2019

У меня есть приложение для узла, в котором я создаю сообщение, и мне нужно передать лицо, создавшее идентификатор сообщения, а также сообщение. Проблема в том, что я всегда так все выписывал

const imageUrl = req.file.path;
const title = req.body.title;
const content = req.body.content;
const post = new Post({
  title: title,
  content: content,
  imageUrl: imageUrl,
  creator: req.userId
});

мой вопрос сейчас, если у меня их много, нельзя ли использовать библиотеку вроде lodash, чтобы выделить все поля вроде

const body = _.pick(req.body, ['produtTitle', 'productImg', 'productPrice', 'productDesc'])
    console.log(`THIS IS ${body}`)
    const product = new Product({
      body,
      userId: req.userId
    });

Каждый раз, когда я пытаюсь так, я получаю 404, а в своем терминале я получаю

сообщение: 'Путь productPrice требуется.', имя: 'ValidatorError', свойства: [Объект], вид: «требуется», путь: 'productPrice', значение: не определено, причина: не определена, '$ isValidatorError': true},

для всех полей

и если я сделаю это, как const product = new Product(req.body), я получу только одну ошибку для 404

message: 'Path `userId` is required.',
        name: 'ValidatorError',
        properties: [Object],
        kind: 'required',
        path: 'userId',
        value: undefined,
        reason: undefined,
        '$isValidatorError': true } }

Я смотрю на библиотеку, потому что выписывание всего может быть очень утомительным и в случае, когда требуется много полей

1 Ответ

0 голосов
/ 05 мая 2019

Вы можете использовать lodash, но передаете тело в качестве ключа при создании нового продукта.Вам нужно разложить ключи от тела.

const body = _.pick(req.body, ['produtTitle', 'productImg', 'productPrice', 'productDesc'])

    const product = new Product({
      ...body,
      userId: req.userId
    });
...