我在 mongoose 中使用 $or
运算符来搜索数据库的 name
和 description
字段。我想检查 queryWord
字符串是否包含数据库字段的任何部分。这是我正在使用的代码:
const query = {
$or: [
{ name: `/${body.queryWord}/i` },
{ description: { $regex: `/${body.queryWord}/i` } },
],
};
Food.find(query, (err, data) => {
if (err) {
res.status(500).send(err);
} else {
res.status(200).send(data);
}
});
但它只返回一个空数组!
非常感谢任何帮助!
谢谢!
答案 0 :(得分:1)
我认为问题是因为您将正则表达式包裹在 `` 中,它被理解为字符串。你可以试试这个方法:
const queryWordRegex = new RegExp(body.queryWord, "i");
const query = {
$or: [
{ name: { $regex: queryWordRegex } },
{ description: { $regex: queryWordRegex } },
],
};