我想使用下面的这个查询来搜索多个词。当我搜索“文档角色”时,我应该使用 sequelize 获取包含所有文档的所有文档以及在其中具有角色的所有文档
function searchDocuments(req, res) {
const limit = req.query.limit || 6,
offset = req.query.offset || 0,
queryString = req.query.q,
splitString = queryString.split(' ');
let querySearch = '';
splitString.forEach((query, index, initial) => {
console.log(initial[index]);
});
if (!queryString) {
return res.status(400).json({
message: 'Invalid search input'
});
}
if (req.decoded.roleId === 1) {
return Document.findAndCountAll({
limit,
offset,
where: {
title: {
$iLike: `%${querySearch}%`
}
},
include: [
{
model: User,
attributes: ['userName', 'roleId']
}
]
})
.then(({ rows: document, count }) => {
if (count === 0) {
return res.status(404).json({
message: 'Search term does not match any document.'
});
}
res.status(200).send({
document,
pagination: pagination(count, limit, offset),
});
})
.catch(error => res.status(400).send(error));
我只想要一个 sequelize 查询,它执行一个带有标题关键字的 OR 任务
从顶部添加以下代码:
const limit = req.query.limit || 6,
offset = req.query.offset || 0,
queryString = req.query.q.replace(/ +(?= )/g, ''),
searchQuery = [];
if (!queryString) {
return res.status(400).json({
message: 'Invalid search input'
});
}
if (req.decoded.roleId === 1) {
const splitString = queryString.trim().split(' ');
splitString.forEach((query) => {
const output = { $iLike: `%${query}%` };
searchQuery.push(output);
});
然后在您查询的位置添加以下内容searchQuery
:
where: {
title: {
$or: searchQuery
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句