Попытка поиска указанной строки c - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь найти указанную строку c в базе данных на основе сообщения пользователя, а именно: catalystname.

В схеме я успешно проиндексировал данную строку как текст:


const { Schema } = mongoose;

const scheduleMessageSchema = new Schema({
    _id: { type: Schema.Types.Oid, auto: true },
    catalystname: String,
    catalystdesc: String,
    catalystquest: String,
    date: String,
});

scheduleMessageSchema.index({catalystname: 'text'});
module.exports = mongoose.model('dbcatalyst', scheduleMessageSchema);

Мой код поиска:

const Catal = require("../src/models/dbcatalyst.js")


module.exports.run = async (client, message, args) => {

    message.content = args.slice(0).join(" ")


        Catal.find({$text: {$search: message.content}})
        .exec(function(docs){

        let embedlogs3 = new Discord.RichEmbed()
            .setAuthor(`1`, message.author.displayAvatarURL)
            .setDescription(`${docs}`)
            .setColor("#33ffff")

        message.channel.send(embedlogs3)
        /*/ ${collected.first().content}/*/
    });


}

И начал поиск нужной строки в сообщении. Бот успешно справляется со своей задачей, но отображает весь документ целиком вместо 1 строки.

_id: 5e243704961eb23c106bfb02,
catalystname: 'Чёрный Коготь',
catalystdesc: '0',
catalystquest: '0',
date: '1579430157018',
__v: 0
}

Можно ли как-то вывести именно строку? catalystname

1 Ответ

0 голосов
/ 19 января 2020

Глядя на документацию Mon goose, кажется, что обратный вызов принимает два параметра:

  1. err Ошибка или ноль
  2. docs Возвращенный документ (ы)

Измените обратный вызов на

Catal.find({$text: {$search: message.content}})
  .exec(function(err, docs){
    ...
  });

, и вы получите массив соответствующих документов.

...