如何修复 UnhandledPromiseRejectionWarning: CastError: Cast to number failed for value "undefined&qu

Posted

技术标签:

【中文标题】如何修复 UnhandledPromiseRejectionWarning: CastError: Cast to number failed for value "undefined" at Discord.js 和 MongoDB【英文标题】:How to fix UnhandledPromiseRejectionWarning: CastError: Cast to number failed for value "undefined" at path in Discord.js and MongoDB 【发布时间】:2021-08-05 02:29:21 【问题描述】:

所以,我正在尝试使用 MongoDB 在 Discord.js 中建立一个简单的经济系统。我首先为了钱做了一个单一的数据库。我还设置了一个命令来模拟向用户添加货币。它工作得很好。只有当我尝试添加具有不同名称、架构和变量等的第二个重复系统时,我才遇到问题。我很好地设置了另一个数据库,它实际上工作得很好。然后我尝试设置一个命令来模拟向该数据库添加值,并在使用该命令时出现此错误UnhandledPromiseRejectionWarning: CastError: Cast to number failed for value "undefined" at path "stars"(第二个数据库称为stars)。由于我实现了一些有用的控制台日志,我想我会在代码遇到此问题时跟踪问题:

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

此代码与我用于第一种货币的代码完全相同,除了所有适当的变量和类似的东西。如果您需要查看更多代码,请告诉我。提前致谢!

编辑:这是一些与星星相关的代码

整个相关的导出:


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
    ,

)

【问题讨论】:

【参考方案1】:

这个错误告诉你你需要知道什么。您正在尝试按数量增加 stars,但 stars 未定义。您需要在代码中进一步查找以找出为什么 stars 没有数值。

【讨论】:

问题是,我认为星星确实有一个数值。我将在我的帖子中添加更多代码。 编辑:代码已添加 您已经添加了传入stars 的代码,但没有添加任何显示何时设置stars 的值。您是否将其记录到控制台以确认它具有数值? 更新:不知道我做了什么,但我搞砸了一些东西,现在它可以工作了,谢谢!

以上是关于如何修复 UnhandledPromiseRejectionWarning: CastError: Cast to number failed for value "undefined&qu的主要内容,如果未能解决你的问题,请参考以下文章

如何修复 npm 审计修复问题?

如何修复drv?

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)