Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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 如何修复未处理的PromisejectionWarning:CastError:Cast to number值“的转换失败”;“未定义”;在Discord.js和MongoDB中的路径处_Javascript_Mongodb_Discord.js - Fatal编程技术网

Javascript 如何修复未处理的PromisejectionWarning:CastError:Cast to number值“的转换失败”;“未定义”;在Discord.js和MongoDB中的路径处

Javascript 如何修复未处理的PromisejectionWarning:CastError:Cast to number值“的转换失败”;“未定义”;在Discord.js和MongoDB中的路径处,javascript,mongodb,discord.js,Javascript,Mongodb,Discord.js,因此,我试图使用MongoDB在Discord.js中建立一个简单的经济系统。我首先只是为了钱建立了一个数据库。我还设置了一个命令来模拟向用户添加货币。它工作得非常好。只有当我尝试添加第二个具有不同名称、模式和变量等的重复系统时,我才遇到问题。我很好地建立了另一个数据库,它实际上运行得很好。然后,我尝试设置一个命令来模拟向该数据库添加值,在使用该命令时,我遇到了以下错误:未处理PromisejectionWarning:CastError:Cast to number在路径“stars”处的值“

因此,我试图使用MongoDB在Discord.js中建立一个简单的经济系统。我首先只是为了钱建立了一个数据库。我还设置了一个命令来模拟向用户添加货币。它工作得非常好。只有当我尝试添加第二个具有不同名称、模式和变量等的重复系统时,我才遇到问题。我很好地建立了另一个数据库,它实际上运行得很好。然后,我尝试设置一个命令来模拟向该数据库添加值,在使用该命令时,我遇到了以下错误:未处理PromisejectionWarning:CastError:Cast to number在路径“stars”处的值“undefined”失败(第二个数据库称为stars)。由于我实现了一些有用的控制台日志,我想我一直在跟踪问题,直到代码出现以下情况:

       const starresult = await profileSchema.findOneAndUpdate({
                guildId,
                userId
            }, {
                guildId,
                userId,
                $inc: {
                    stars
                }
            }, {
                upsert: true,
                new: true
            })
这段代码与我在第一种货币中使用的代码完全相同,除了所有正确的变量和类似的东西。如果您需要查看更多代码,请告诉我。提前谢谢

编辑:这里有一些与stars相关的代码

整个相关出口:


const mongo = require('./mongo')
const profileSchema = require('./schemas/profile-schema')

const starsCache = {}

module.exports = (client) => {}

module.exports.addStars = async (guildId, userId, coins, stars) => {
    return await mongo().then(async (mongoose) => {
        try {
            console.log('Running findOneAndUpdate()')

            const starresult = await profileSchema.findOneAndUpdate({
                guildId,
                userId
            }, {
                guildId,
                userId,
                $inc: {
                    stars
                }
            }, {
                upsert: true,
                new: true
            })

            console.log('RESULT:', starresult)

            starsCache[`${guildId}-${userId}`] = starresult.stars
            
            return starresult.stars
        } finally {
            mongoose.connection.close()
        }
    })
}
配置文件架构的一部分:

const profileSchema = mongoose.Schema({
    guildId: reqString,
    userId: reqString,
    stars: {
        type: Number,
        required: true
    },
    coins: {
        type: Number,
        required: true
    },

})


错误是告诉你你需要知道的。您正试图按星号
递增,但星号
未定义。您需要在代码中进一步查找,以了解为什么
stars
没有数值。

问题是,我认为stars确实有数值。我将在我的帖子中添加更多的代码。编辑:已添加代码您已添加到传递
星号
的代码中,但未显示设置
星号
的值时显示的任何内容。你把它记录到控制台上确认它有一个数值了吗?更新:不确定我做了什么,但我弄乱了一些东西,现在它工作了,谢谢!