Я беру свой первый класс JavaScript и пытаюсь создать веб-приложение, в котором я могу искать конкретную информацию (база данных в mongoDB) через форму веб-браузера.
Вот как выглядит моя схема данных (упрощенно и показывает только соответствующие поля):
const Posts = new mongoose.Schema({
postType: {type: String, required: true}, // "Mentee" or "Mentor"
area: {type: String, required: true}, // "Academics" or "Career"
postName: {type: String, required: true}, // "Should I .... ?"
});
В настоящее время моя форма позволяет пользователю искать максимум три критерия (как показано выше),которые postType
, area
, postName
. Пользователь может искать только 1 свойство до 3 свойств! Если пользователь ничего не ищет, Интернет должен вернуть ВСЕ результаты!
Вот мой код для .find()
.
app.get('/', (req, res) => {
const queryObj = {};
if (req.query.postNameQ) {
queryObj.postName = req.query.postNameQ;
}
if (req.query.postTypeQ) {
queryObj.postType = req.query.postTypeQ;
}
if (req.query.areaQ) {
queryObj.area = req.query.areaQ;
}
Posts.find(queryObj, (err, found) => {
if (err) {
// error handling
}
console.log('queryObj: ', queryObj);
res.render('home', {found: found,
timesAccessed: req.session.timesAccessed});
});
});
Я достиг точки, где я могу искать результатыэто "точно" соответствует тому, что я напечатал в моей форме. Например, если я ищу postType=Mentee
, я могу получить результаты, чей postType
равен Mentee
, но если я ищу postType=Men
, я не получу никакого результата.
Однако я хочу иметь возможность получать результаты, чье (заданное) свойство включает в себя все, что вставлено в форму, без «точного» соответствия результатов. Например, я могу искать сообщения, чьи postName
содержат «Должен ли я», потому что теперь, если я введу «должен я», ничего не появится, поскольку все сообщения «1022 * не точно совпадают»Должен ли я '.
прочитать статьи SO, решение которых заключается в использовании чего-то вроде db.collection.find( {propertyName: { $regex: "Programming"} } );
, что я могу сделать, если я ищу только одно свойство схемы. НО, поскольку я хочу искать одноили несколько объектов, я не могу.
Пожалуйста, помогите, и большое спасибо за вашу помощь!