This repository has been archived on 2025-11-04. You can view files and clone it, but you cannot make any changes to its state, such as pushing and creating new issues, pull requests or comments.
qoverflow/server/routes/question/Search.js

59 lines
1.4 KiB
JavaScript

const config = require('../../config.json');
const Question = require('../../db/models/Question');
async function Search(req, res) {
const { creator, title, text, tags, createdAt, sort } = req.query;
let searchQuery = {};
if (creator) {
searchQuery['creator'] = {
$regex: creator,
};
}
if (title) {
searchQuery['title'] = {
$regex: title,
};
}
if (text) {
searchQuery['text'] = {
$regex: text,
};
}
if (tags) {
searchQuery['tags'] = { $all: tags };
}
if (createdAt) {
searchQuery['createdAt'] = createdAt;
}
let sortQuery = [[createdAt, 'desc']];
switch (sort) {
case 'u':
sortQuery = [['upvotes', 'desc']];
break;
case 'uvc':
sortQuery = [
['upvotes', 'desc'],
['view', 'desc'],
['comments', 'desc'],
];
break;
case 'uvac':
sortQuery = [
['upvotes', 'desc'],
['view', 'desc'],
['answers', 'desc'],
['comments', 'desc'],
];
searchQuery['hasAcceptedAnswer'] = false;
break;
}
const questions = await Question.find(searchQuery).sort(sortQuery);
return res.send({ questions });
}
module.exports = Search;