未保存的值 mongodb

Value not saving in mongodb

const serverS = await server.findOne({ guildID: message.guild.id });
serverS.settings[1]["links"] = true;
serverS.save()

我用的代码^^^^

所以当它保​​存更改时我使用 MongoDB 罗盘检查数据库 我没有看到数组对象中出现更改

架构如果需要解决问题

const ServerSchema = new mongoose.Schema({
    guildID: { type: String },
    settings: {
        type: Array, default: [
            {
            //Some other stuff
            },
            {
                links: false,
            },
            {
                prefix: ",",
            }
        ]
    },
});

save()方法returns一个承诺,所以你应该await保存如下:

const serverS = await server.findOne({ guildID: message.guild.id });
serverS.settings[1]["links"] = true;
const dataSaved = await serverS.save(); //if the save fail will throw an error 
console.log({dataSaved}) //to verify the data was saved 

找到了如何使用 javascript 和 mongoose 更新数组的一部分的方法:

例如:

collection name
||    array name                   values
||    ||          id               ||
\/    \/          \/               \/
data.settings.set(0, {lang: "english", prefix: "!"})
data.save()

保存的数据:

"settings": [
   {
      "lang": "english",
      "prefix": ",",
   }
]