Поиск с req.query и regex
У меня есть модель:
const product = new Schema({
title: String,
price: Number,
description: String,
material: String,
status: {
type: Number,
default: 0
},
category: {
type: Schema.Types.ObjectId,
ref: 'Category'
},
subcategory: {
type: Schema.Types.ObjectId,
ref: 'Subcategory'
},
details: [{
color: String,
size: [String],
img: [String],
detailStatus: {
type: Number,
default: 0
}
}]
})
Хочу с помощью req.query и regex осуществить поиск данных по subcategory и category, внутри этих двух есть поля как title - название category и subcategory, дело в том что не удается найти их код:
if(req.query.search){
const regex = new RegExp(escapeRegex(req.query.search))
product = await Product.find({
$or: [
{title: regex}, {_id: regex}, {subcategory: {title: regex}}
]
})
.populate([
{path: 'subcategory', select: 'title'},
{path: 'category', select: 'title'},
])
.lean()
}
Приходит следующая ошибка:
CastError: Cast to ObjectId failed for value "{ title: /Футболка\ оверсайз/ }" (type Object) at path "subcategory" for model "Product"
at model.Query.exec (C:\coding\market-backend\node_modules\mongoose\lib\query.js:4803:21)
at productPage (C:\coding\market-backend\controllers\product.js:49:8)
at processTicksAndRejections (internal/process/task_queues.js:95:5) {
messageFormat: undefined,
stringValue: '"{ title: /Футболка\\ оверсайз/ }"',
kind: 'ObjectId',
value: { title: /Футболка\ оверсайз/ },
path: 'subcategory',
И так же не получается делать поиск с помощью _id, пожалуйста помогите.