Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试搜索特定字符串_Javascript_Mongodb_Mongoose_Discord_Discord.js - Fatal编程技术网

Javascript 尝试搜索特定字符串

Javascript 尝试搜索特定字符串,javascript,mongodb,mongoose,discord,discord.js,Javascript,Mongodb,Mongoose,Discord,Discord.js,我试图根据用户的消息在数据库中找到一行,即:catalystname 在架构中,我已成功地将给定字符串作为文本索引: const { Schema } = mongoose; const scheduleMessageSchema = new Schema({ _id: { type: Schema.Types.Oid, auto: true }, catalystname: String, catalystdesc: String, catalystques

我试图根据用户的消息在数据库中找到一行,即:
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}/*/
    });


}
并开始搜索邮件中所需的行。bot成功地处理了它的任务,但是完整地显示了整个文档,而不是一行

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

我能准确地输出字符串吗
catalystname

查看Mongoose文档,回调似乎需要两个参数:

  • err
    错误或空值
  • docs
    返回的文档
  • 将您的回拨更改为

    Catal.find({$text:{$search:message.content})
    .exec(函数(错误、文档){
    ...
    });
    

    您应该会收到一系列匹配的文档。

    欢迎使用StackOverflow。您是否尝试过使用
    文档。catalystname
    ?@ChrisSatchell
    类型错误:无法读取null的属性“catalystname”
    什么是
    文档
    ?它是对象还是数组?@ChrisSatchell对象,可能是。没错,我得到了必要的数组,但现在我需要从这个数组中找到字符串
    catalystname
    。我试图执行此操作,但控制台抛出错误:
    (节点:8904)弃用警告:collection.ensureIndex已弃用。改为使用createIndexes。
    ,输出:
    undefined
    您正在查找的
    docs[index]。catalystname
    ,其中
    index
    是您正在查找的项目的索引(在本例中可能是
    0
    docs['text']。catalystname
    对吗?我只是不太明白它是如何工作的。在投入并创建机器人之前,您可能想先学习基本原理: