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