Нечеткий поиск с использованием mongoose от vue client - PullRequest
0 голосов
/ 13 февраля 2019

Получение ошибки неизвестно оператор верхнего уровня $ regex

search.vue `

let questDocuments = await conversation
        .find({ query: { $limit: 100, $search: q, skippop: true } })
        .then(response => {`

q - передаваемая строка

служебный хук

before: {
    all: [],
    find: [
      hookBeforeFind,
      search({
        fields: ["label"],
        deep: true
      })      
    ],

Модель

const conversation = new Schema(
    {
      label: { type: String, required: true },
      nodeId: { type: String, required: true },
      details: { type: String },
      url: { type: String },
      creator: { type: String },
      handle: { type: String },
      date: { type: String },

Из строки поиска добавить выражение для поиска.Например "the"

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Добавьте $ regex в белый список службы Mongoose:

app.use('/messages', service({
  Model,
  whitelist: [ '$regex' ]
}));
0 голосов
/ 14 февраля 2019

попробуйте

// regex to find records that start with letter any name , example "e"
  Model.aggregate([
    {
      $match: {
        field_name: {
          $regex: "^" + searchName,
          $options: "i"
        }
      }
    }]).exec(function(err, result) {
    if (err) { // handle here }
    if (result) { // do something }
    }
...