我正试图获取包含任何我传递在过滤器的url必须出现在标题字段或在这些文档的任务数组:
示例:localhost:4000/search?filter=Morning.在这里我查找标题或任务中包含Morning得文档.
但当我点击API时,它会返回所有文档。
{
"success": true,
"message": "Successfully fetched todos",
"filteredArray": [
{
"_id": "6386e34e2c65763cf25008f3",
"toDoTitle": {
"title": "Morning routines",
"_id": "6386e34e2c65763cf25008f4",
"createdAt": "2022-11-30T04:59:58.940Z",
"updatedAt": "2022-11-30T04:59:58.940Z"
},
"toDoTasks": {
"tasks": [
"code",
"sleep",
"code",
"eat",
"code"
],
"_id": "6386e34e2c65763cf25008f5",
"createdAt": "2022-11-30T04:59:58.941Z",
"updatedAt": "2022-11-30T04:59:58.941Z"
},
"createdAt": "2022-11-30T04:59:58.941Z",
"updatedAt": "2022-11-30T04:59:58.941Z",
"__v": 0
},
{
"_id": "6386e3552c65763cf25008f7",
"toDoTitle": {
"title": "Morning",
"_id": "6386e3552c65763cf25008f8",
"createdAt": "2022-11-30T05:00:05.813Z",
"updatedAt": "2022-11-30T05:00:05.813Z"
},
"toDoTasks": {
"tasks": [
"code",
"sleep",
"code",
"eat",
"code"
],
"_id": "6386e3552c65763cf25008f9",
"createdAt": "2022-11-30T05:00:05.813Z",
"updatedAt": "2022-11-30T05:00:05.813Z"
},
"createdAt": "2022-11-30T05:00:05.813Z",
"updatedAt": "2022-11-30T05:00:05.813Z",
"__v": 0
},
{
"_id": "6386e35f2c65763cf25008fb",
"toDoTitle": {
"title": "evening",
"_id": "6386e35f2c65763cf25008fc",
"createdAt": "2022-11-30T05:00:15.809Z",
"updatedAt": "2022-11-30T05:00:15.809Z"
},
"toDoTasks": {
"tasks": [
"code",
"sleep",
"code",
"eat",
"code"
],
"_id": "6386e35f2c65763cf25008fd",
"createdAt": "2022-11-30T05:00:15.809Z",
"updatedAt": "2022-11-30T05:00:15.809Z"
},
"createdAt": "2022-11-30T05:00:15.810Z",
"updatedAt": "2022-11-30T05:00:15.810Z",
"__v": 0
},
{
"_id": "6386e3672c65763cf25008ff",
"toDoTitle": {
"title": "evening",
"_id": "6386e3672c65763cf2500900",
"createdAt": "2022-11-30T05:00:23.977Z",
"updatedAt": "2022-11-30T05:00:23.977Z"
},
"toDoTasks": {
"tasks": [
"code"
],
"_id": "6386e3672c65763cf2500901",
"createdAt": "2022-11-30T05:00:23.977Z",
"updatedAt": "2022-11-30T05:00:23.977Z"
},
"createdAt": "2022-11-30T05:00:23.977Z",
"updatedAt": "2022-11-30T05:00:23.977Z",
"__v": 0
},
{
"_id": "6386e3712c65763cf2500903",
"toDoTitle": {
"title": "night",
"_id": "6386e3712c65763cf2500904",
"createdAt": "2022-11-30T05:00:33.286Z",
"updatedAt": "2022-11-30T05:00:33.286Z"
},
"toDoTasks": {
"tasks": [
"code"
],
"_id": "6386e3712c65763cf2500905",
"createdAt": "2022-11-30T05:00:33.286Z",
"updatedAt": "2022-11-30T05:00:33.286Z"
},
"createdAt": "2022-11-30T05:00:33.287Z",
"updatedAt": "2022-11-30T05:00:33.287Z",
"__v": 0
}
]
}
这是我的模特
const mongoose = require("mongoose");
const schema = mongoose.Schema;
const title = new schema(
{
title:{
type: String,
trim: true
}
},
{
timestamps: true
}
);
const task = new schema(
{
tasks:[{ type: String,trim: true}]
},
{
timestamps: true
}
)
const toDoSchema = new schema({
toDoTitle : title,
toDoTasks: task
},
{
timestamps: true
});
const toDoModel = mongoose.model("toDo", toDoSchema);
module.exports = toDoModel;
这是我的过滤控制器:
//importing model
const toDoModel = require('../models/ToDoModel');
//importing utils function
const toDosPerPage = require("../utlis/ToDosPerPage")
const searchController = async (req,res)=>{
try{
const {filter} = req.query
if(!filter) throw new Error("Please provide Something in filter to search");
const filteredArray = await toDoModel.find({
$or:[{title:new RegExp(filter,'i')},{tasks: new RegExp(filter,'i')}]
});
res.status(200).json({
success: true,
message: "Successfully fetched todos",
filteredArray
});
}
catch(err){
res.status(401).json({
success: false,
message: "Some error occuried",
error: err.message
})
console.log(err.message);
}
}
module.exports = searchController;
我希望它只返回那些标题或任务字段中包含早晨的文档。
1条答案
按热度按时间fruv7luv1#
要在嵌入文档中查找,请使用dot .