我正在使用这样的 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, "\\$&");
};
筛选
在过滤器中,我正在发送 { data : { name : "a" } }
这是给所有名称以“a”开头的产品,这很好!
但现在我想获得具有特定划分的过滤结果
响应仅包括特定的部门产品
产品架构
_id: mongoose.Schema.Types.ObjectId,
division_id: { type: mongoose.Schema.Types.ObjectId, ref: 'Division', required: [true, "Product Division Id is required"] },
name: { type: String, required: [true, "Product Name is required"] },
划分模式
_id: mongoose.Schema.Types.ObjectId,
name:{ type: String, required: "Division Name is required" },