I am trying to create search endpoint in my rest API. where it queries posts with the post title provided by users. I am trying this from a while but still, I am unable to make it. Anyone, please help me to make this.
The way I tried it doesn't work. It always gives me an empty array while testing search endpoint in postman
. These are my codes.
posts/models
import mongoose from 'mongoose';
const {Schema} = mongoose;
mongoose.Promise = global.Promise;
const postSchema = new Schema({
title: {type: String, required: true},
link: String,
text: String,
isDeleted: {type: Boolean, default: false},
createdAt: {type:Date,default: Date.now},
_creator: {type: Schema.ObjectId, ref: 'User'},
_comments: [{type: Schema.ObjectId, ref: 'Comments' }]
});
const Post = mongoose.model('Post', postSchema);
export default Post;
controller/postscontroller.js
postController.search = (req, res) => {
db.Post.find({'$text': {'$search': req.body.query}})
.then(result => {
console.log(result);
res.status(200).json({
result
})
})
.catch(err => {
res.status(500).json({
error: err
})
})
};
routes
routes.post('/posts/search', postController.search);