Я новичок в пн goose и в настоящее время я пишу приложение, чтобы изучить его. У меня есть схема художника и форма для поиска с несколькими дополнительными полями. Например, пользователь может указать имя, минимальный возраст и выполнить поиск по модели, не заполняя другие поля формы. На контроллере я беру все поля из формы через объект req.body, и у меня есть объект запроса с тысячью операторов if, я проверяю, не является ли свойство неопределенным, и если нет, я помещаю его в объект как свойство и объект передаются методу find. Проблема в том, что когда я заполняю минимальный возраст и помещаю в объект запроса это свойство query.min_age = { $gte: min_age}
, $ gte преобразуется в строку и в результате не может правильно запустить метод find.
Пн goose Модель
const mongoose = require("mongoose");
const AlbumSchema = require("./album")
const CompanySchema = require("./company")
const Schema = mongoose.Schema;
const ArtistSchema = new Schema({
name: String,
age: Number,
yearsActive: Number,
albums: [AlbumSchema],
company:[{type: Schema.Types.ObjectId, ref: "Company"}]
});
const Artist = mongoose.model("artist", ArtistSchema);
module.exports = Artist;
Контроллер
app.post("/", (req, res, next) => {
const name = req.body.name;
const min_age = req.body.min_age;
const min_active = req.body.min_active;
const sort = req.body.sort;
const query = {};
if(name) {
query.name = name;
}
if(min_age) {
query.min_age = { $gte: min_age};
}
if(min_active) {
qyery.min_active = {gte: min_active};
}
Artist.find(query).
sort(sort)
.then( artists => {
res.render("index", {
artists: artists
})
});
});
На рисунке ниже изображена строка $ gte, когда я ее утешаю