Я использую запрос Model.find() следующим образом
const model = require("../../models/product");
module.exports = async(filters) => {
let data = Object.values(filters.data)[0]
let field = Object.keys(filters.data)[0];
const regex = new RegExp(escapeRegex(data), 'gi');
return await model.find({ $or: [{
[field]: regex }] }).populate("division_id").populate("type_id").populate("category_id").exec()
}
//$or:[ {'_id':objId}, {'name':param}, {'nickname':param} ]
function escapeRegex(text) {
return text.replace(/[-[\]{}()*+?. \\^$|#\s]/g, "\\$&");
};
Фильтр
В фильтре я отправляю {данные: {имя: "a"} }
который дает все продукты с именем, начинающимся с "а", что нормально!
но теперь я хочу получить результат фильтра с определенным разделением
ответ включает только этот конкретный продукт подразделения
Схемы продуктов
_id: mongoose.Schema.Types.ObjectId,
division_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Division', required: [true, "Требуется идентификатор подразделения продукта"] },
name: {type: String, required: [true, "Требуется название продукта"] },
Схемы подразделений
_id: mongoose.Schema.Types.ObjectId,
name:{ type: String, обязательно: "Требуется название подразделения" },
спасибо за ваш ответ ... но я все еще получаю сообщение об ошибке "Не удается прочитать свойство '_id' из null"
@user16452247 user16452247 Это должно быть в какой-то другой строке, потому что в моем коде нет объекта, допускающего значение NULL.