Каков наилучший способ обработки строк запросов в Express API? - PullRequest
0 голосов
/ 26 сентября 2018

Я начинающий разработчик nodejs, работающий над созданием API-интерфейса express rest с необязательными параметрами запроса.

Например, рассмотрим следующую схему для пользователя:

phone: {
  countryCode: String,
  number: phoneType
},
phoneVerified: { type: Boolean, default: false },
emailVerified: { type: Boolean, default: false },
rating: Number,
balance: { type: Number, default: 0 },
occupation: String,
gender: { type: String, enum: genders },

Я хочувыставить этот ресурс в / users и разрешить запросы через необязательные строки запроса.

Для бывших, / users? emailVerified = true & phoneverified = false & пола = мужской и род занятий = сантехник & limit = 10

Это должно вернуть всех пользователей, которыеудовлетворяют критериям, оставляя при этом почти все опции необязательными.

Каков наилучший способ сделать это надежным и ориентированным на будущее способом?

Appraoch 1: Мой первый подход состоял в том, чтобы использоватьблоки, чтобы проверить, какие параметры существуют в запросе, и соответственно построить запросы mongoose, но это выглядит уродливо и очень трудно для чтения.

queryObj = {};
if (req.query.occupation) {
  queryObject = {
    ...queryObject,
    occupation: req.query.occuption
  };
}
if (req.query.phoneVerified) {
  queryObject = {
    ...queryObject,
    phoneVerified: req.query.phoneVerifed
  };
}
const users = await User.find(queryObject);

Я также нашел пакет querymen , который выглядит многообещающим.Если кто-то из опытных может подсказать мне, что является лучшей практикой?Заранее спасибо

1 Ответ

0 голосов
/ 26 сентября 2018

вы делаете это правильно.Вы также можете попробовать

queryObject = {};
if (req.query.params.occupation) {
    queryObject.occupation= req.params.occuption
}
if (req.params.phoneVerified) {
    queryObject.phoneVerified= req.params.phoneVerifed
}
const users = await User.find(queryObject);

. Вы можете добавить новые свойства в json, используя "."

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