首页 > 解决方案 > 如果 Discord.JS 中缺少要查找的字段,我如何为我的 MongoDB 集合添加新字段?

问题描述

如果用户没有配置文件,则列出的最底部字段(“dabmeup”)与其他字段一起正确创建,但当用户已经拥有配置文件时,它不会更新。我如何正确地使代码添加字段而不覆盖该用户已经拥有的内容?下面是我的“message.js”文件的一部分,它检查实际添加的字段。

    let profileData;
    try {
        profileData = await profileModel.findOne({ userID: message.author.id });
        if (!profileData) {
            let profile = await profileModel.create({
                userID: message.author.id,
                serverID: message.guild.id,
                coins: 1000,
                bank: 0,
                sent: { type: Number },
                received: { type: Number },
                owner: { type: Number, default: 0 }, //code: 1
                admin: { type: Number, default: 0 }, //code: 1
                nyaw: { type: Number, default: 0 }, //code: 2
                donator: { type: Number, default: 0 }, //code: 3
                dev: { type: Number, default: 0 }, //code: 4
                tester: { type: Number, default: 0 }, //code: 4
                oneK: { type: Number, default: 0 }, //code: 6
                tenK: { type: Number, default: 0 }, //code: 7
                hundK: { type: Number, default: 0 }, //code: 8
                oneM: { type: Number, default: 0 }, //code: 9
                tenM: { type: Number, default: 0 }, //code: 10
                hundM: { type: Number, default: 0 }, //code: 11
                dabmeup: {type: Number, default: 0} //code: 12
            });
            profile.save();
        }
    } catch (err) {
        console.log(err);
    }

标签: javascriptnode.jsmongodbmongoosediscord.js

解决方案


在您的模型中,如果它已经定义了默认值 0,那么您不需要添加它create()并且save()在修改现有文档时使用提交。

总之,您的代码应该看起来像


    let profileData;
    try {
        profileData = await profileModel.findOne({ userID: message.author.id });
        if (!profileData) {
            let profile = await profileModel.create({
                userID: message.author.id,
                serverID: message.guild.id,
                coins: 1000,
                bank: 0,
                sent: 0,
                received: 0,
            });
        }
    } catch (err) {
        console.log(err);
    }


推荐阅读