Как использовать массив request.body в предложении where с sequelize в nodejs - PullRequest
0 голосов
/ 28 августа 2018

Я хочу найти несколько элементов из базы данных с помощью sequelize. Я использую в операторе, чтобы использовать это.

Это работает, когда я пишу $ in: [1,2]

Но когда я пишу $ in: [req.body.regions] //, это не работает. Как я могу разобрать тело объекта в массив.

Phones.findAll({
                attributes: ['id', 'enabled', 'color_id', 'sold', 'region_id'
                ],
                where: {
                    region_id: (req.body.region_id) ? { $in : [req.body.region_id]}: { $ne: null },
                    color_id: (req.body.color_id) ? { $in : [req.body.color_id]} : { $ne: null },
                    phone_model_id: (req.body.phone_model_id) ? { $in : [req.body.phone_model_id]} : { $ne: null },
                    enabled: 1,
                },

Postman example

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

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

{ $in : req.body.region_id.split(",") }

Хороший способ сделать : это должно быть regions[0], regions[1] или просто повторить то же имя regions[] в вашем API почтальона, затем в вашем коде используйте его как:

{ $in : req.body.regions }

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

0 голосов
/ 28 августа 2018

Если

req.body.regions

это массив, использующий этот код:

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