Javascript 如何修复未处理的PromisejectionWarning:CastError:Cast to number值“的转换失败”;“未定义”;在Discord.js和MongoDB中的路径处
因此,我试图使用MongoDB在Discord.js中建立一个简单的经济系统。我首先只是为了钱建立了一个数据库。我还设置了一个命令来模拟向用户添加货币。它工作得非常好。只有当我尝试添加第二个具有不同名称、模式和变量等的重复系统时,我才遇到问题。我很好地建立了另一个数据库,它实际上运行得很好。然后,我尝试设置一个命令来模拟向该数据库添加值,在使用该命令时,我遇到了以下错误:未处理PromisejectionWarning:CastError:Cast to number在路径“stars”处的值“undefined”失败(第二个数据库称为stars)。由于我实现了一些有用的控制台日志,我想我一直在跟踪问题,直到代码出现以下情况: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”处的值“
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确实有数值。我将在我的帖子中添加更多的代码。编辑:已添加代码您已添加到传递星号
的代码中,但未显示设置星号
的值时显示的任何内容。你把它记录到控制台上确认它有一个数值了吗?更新:不确定我做了什么,但我弄乱了一些东西,现在它工作了,谢谢!