Как использовать autoIndex в mon goose / mongodb - PullRequest
1 голос
/ 09 марта 2020

Я использую mongodb с mon goose в моем проекте. Я пытаюсь использовать текстовые индексы, чтобы я мог реализовать функцию поиска. Я установил для параметра auotIndex значение true, но я все еще получаю следующую ошибку «MongoError: текстовый индекс, необходимый для запроса $ text», это указывает на то, что текстовые индексы не были сгенерированы, и поэтому autoIndex не работает, если я не ошибаюсь.

Кстати, я знаю, что autoIndex не должен быть в готовых к работе приложениях, потому что он тяжелый, но проект, над которым я работаю, предназначен только для учебных целей.

// Database start upp
(async () => {
    const DB_URI = "mongodb://localhost:27017/photogram-db";

    const DB_SETTINGS = {
        useNewUrlParser: true,
        useUnifiedTopology: true,
        useCreateIndex: true,
        autoIndex: true
    };

    await mongoose.connect(DB_URI, DB_SETTINGS);
})();


// Person model / schema
const PersonSchema = new Schema({
    firstName: String,
    lastName: String,
    username: String,
});

PersonSchema.index({
    firstName: "text",
    lastName: "text",
    username: "text"
});

const PersonModel = model("Person", PersonSchema);

1 Ответ

0 голосов
/ 09 марта 2020

Создание текстового индекса занимает некоторое время, поэтому я думаю, что оно не готово при поиске с текстом? Может быть, вы можете попытаться прослушать событие индекса, когда индекс завершен.

 PersonModel.on('index', function(error) {
      console.log('index is finished');
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...