Как мы можем использовать ‘extended’ true или false оба в одном проекте

#node.js #body-parser #express-4

#node.js #body-parser #экспресс-4

Вопрос:

Я работаю над nodejs с помощью express, и в моем проекте мне требуется фильтр, а также вложенный объект.

Если я установлю это промежуточное программное обеспечение для bodyparser

 app.use(bodyParser.urlencoded({extended: false}));
app.use(bodyParser.json('application/json'));
  

тогда фильтр работает правильно, но вложенный объект выдает неопределенное значение

введите описание изображения здесь

посмотрите на это на картинке Я ищу amit и получаю только одну запись с именем amit

если я установлю это промежуточное программное обеспечение для bodyparser

 app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json('application/json'));
  

тогда вложенный объект работает правильно, но фильтр выдает неопределенное значение

введите описание изображения здесь

Я ищу amit и получаю все записи.

как я могу правильно получить оба значения?

Пожалуйста, помогите

Комментарии:

1. можете ли вы привести пример, для которого фильтр не работает должным образом, когда extended: true ?

2. посмотри на этот пример, брат

Ответ №1:

Когда вы устанавливаете extended false, вы не можете передавать вложенные объекты. Промежуточное программное обеспечение используется для извлечения содержимого тела из входящих запросов. Итак, вы можете сделать одну вещь, используйте следующий код

 app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json('application/json'));
  

и извлечь объект, используя оператор dot(.) вместо req.body[‘….[…]’]

например,

 req.body.search.value 
  

работает нормально, но

 req.body['search[value]']
  

может быть неопределенным