羽毛-猫鼬$like查询 MongoDb 收到错误



我有以下猫鼬模式 -

const myTableSchema = new Schema({
  Category: { type: String, required: false },
  Tag: { type: String, required: false },
  createdAt: { type: Date, 'default': Date.now },
  updatedAt: { type: Date, 'default': Date.now },
});

请注意,它们都是字符串。我试图做一个像下面这样的查询——

localhost:1971/api/myTable?Category[$like]=Javascript

我在"类别"列中有带有 Javascript 的行。但是得到以下错误-

{
  "name": "GeneralError",
  "message": "Can't use $like with String.",
  "code": 500,
  "className": "general-error",
  "data": {},
  "errors": {}
}
我知道

自从讨论这个问题以来已经有一段时间了,但我有一个类似的问题,@Daff提供的代码对我有很大帮助,但它包含一个错误。

检查query[field].$like是否存在,但随后query[field].$search附加到最终查询。

正确的代码表示形式(如果遵循原始问题(应该是:

exports.searchRegex = function () {
  return function (hook) {
    const query = hook.params.query;
    for (let field in query) {
      if(query[field].$like && field.indexOf('$') == -1) {
        query[field] = { $regex: new RegExp(query[field].$like) }
      }
    }
    hook.params.query = query
    return hook
  }
}

MongoDB和Mongoose没有$like运算符。实现搜索的常用方法(请参阅此常见问题解答(是添加一个钩子,将可搜索术语转换为MongoDB$regex查询,例如支持您正在寻找的$like语法:

exports.searchRegex = function () {
  return function (hook) {
    const query = hook.params.query;
    for (let field in query) {
      if(query[field].$like && field.indexOf('$') == -1) {
        query[field] = { $regex: new RegExp(query[field].$search) }
      }
    }
    hook.params.query = query
    return hook
  }
}

相关内容

  • 没有找到相关文章

最新更新