【问题标题】:Foreach document mongooseForeach 文件猫鼬
【发布时间】:2021-11-09 05:10:46
【问题描述】:

我正在尝试遍历 mongodb 集合中的所有文档。

这就是我所拥有的。

module.exports = {
    name: `store`,
    aliases:['shop'],

    /**
     * @param {Client} client
     * @param {Message} message
     * @param {String[]} args
     */
run: async(client, message, args) => {
    
    const exampleEmbed = new Discord.MessageEmbed()
    .setColor('#0099ff')
    .setTitle('Boblox Shop')
    .setDescription('Buy stuff with $buy <id>')
    const items = require('./shop')

    items.find({}).then(function(documents) {
      
        documents.forEach(function(u) {
            exampleEmbed.addField(`${u.ItemName}`, `Price: ${u.Price}`)

        });
    })

    .setTimestamp()
}
}

Shop 是一个模式。这是商店的代码

const mongoose = require("mongoose")

const commandsRan = mongoose.Schema({
    ItemName:String,
    Price:Number,
    Stock:Number,
    Rarity:String,
    Description:String,
    Emoji:String

})

module.exports = mongoose.model("Shop", commandsRan, 'shopitems')

当我运行代码商店命令时,我收到以下错误: TypeError: items.find(...).then(...).setFooter 不是函数

如何遍历集合中的每个文档并将字段添加到嵌入?

【问题讨论】:

    标签: mongodb mongoose discord.js


    【解决方案1】:

    首先,我意识到您的代码 sn-p 不是您正在运行的确切代码,因为抛出的错误提到了 ...setFooter 的错误和函数,甚至没有提到 setFooter在代码 sn-p 中。还有一个流浪的setTimestamp函数,在items.find()的末尾,你可以把它移到嵌入的末尾。

    module.exports = {
      name: `store`,
      aliases:['shop'],
    
      /**
       * @param {Client} client
       * @param {Message} message
       * @param {String[]} args
       */
      run: async(client, message, args) => {
    
        const exampleEmbed = new Discord.MessageEmbed()
        .setColor('#0099ff')
        .setTitle('Boblox Shop')
        .setDescription('Buy stuff with $buy <id>')
        .setTimestamp();
    
        const items = require('./shop');
    
        items.find({}).then(function(documents) {
          documents.forEach(function(u) {
            exampleEmbed.addField(`${u.ItemName}`, `Price: ${u.Price}`);
          });
        })
      }
    }
    

    我通常只是重新格式化代码,并将setTimestamp 函数移动到 MessageEmbed 构造函数的末尾,items.find 应该没有任何问题。

    【讨论】:

    • 现在它运行代码但不添加字段。它只添加描述而不是字段
    • 数据库中确实有文档
    • 我不确定 mongo 是如何工作的,可能 items.find({}) 没有返回任何文档,也许尝试添加 console.log(documents),检查它是否返回任何内容!
    • 当我 console.log 文件时,它可以工作,但是当我尝试添加字段时,它不会
    • 然后尝试控制台记录u,这可能是这背后的罪魁祸首!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 2015-01-23
    相关资源
    最近更新 更多