正在更新包含数字的架构



我目前面临的问题是查找和更新包含数字的文档字段。我尝试过查找和更新不是数值的字段,它运行得很好,很可能只是缺少了一行代码。

我的主要代码如下:

const fs = require('fs');
const database = require('../../database');
const warnsSchema = require('../../schemas/warns-schema')
module.exports = {
name: 'test',
description: "Test Command",
async run(client, message, args, Discord){
const main_chat = message.guild.channels.cache.find(ch=>ch.name==="main_chat")
const sentIn = message.channel.id
const CaseNumber = args[0]
const reason = args.join(" ")
if(sentIn != main_chat) return;
await database().then(async database => {
try{
const results = await warnsSchema.updateOne({
"Warning.CaseNumber": CaseNumber
},
{
$set: {
"Warning.$.Reason": reason
}
})
console.log(results)
} finally {
database.connection.close()
}
})
}
}

我当前的模式如下:

const database = require('mongoose')
const warnsSchema = database.Schema({
Username: {
type: String,
required: true
},
Warning: {
type: Object,
required: true
},
CaseNumber: {
type: Number,
required: true
}
})
module.exports = database.model('punishments', warnsSchema)

举个例子,如果我要更换

const results = await warnsSchema.updateOne({
"Warning.CaseNumber": CaseNumber
},
{
$set: {
"Warning.$.Reason": reason
}
})

const results = await warnsSchema.updateOne({
"Warning.Reason": CaseNumber
},
{
$set: {
"Warning.$.WarnedBy": reason
}
})

这些值会被正确地更改,我就可以继续前进了。尽管我一将其更改为"Warning.CaseNumber",代码就会停止正常工作,它不会崩溃,只是不会编辑任何文档。

到目前为止,我已经将CaseNumber设置为命令后第一个参数的常量,reason应该是替换前一个参数的新原因。

事先谢谢。

对于遇到同样问题的人来说,我犯了一个愚蠢的错误。必须指定某个参数是一个数字,才能将其识别为实际数字。示例:Number(args[0])

最新更新