I try to build a database for a giveaway bot using MongoDB. Once a new giveaway is created the bot runs the following code to write the new giveaway into the databank:
const {mongoose} = require("mongoose")
const mainSchema = require('../models/mainSchema')
module.exports = {
  async execute(interaction){
  await new mainSchema ({
    guild_id: 1234567890,
    giveaways: [{
      identifier: 34,
      destination: 987654321,                      
    }],                                                                        
  }).save()
}
Giveaways should be a nested document in the document with the server’s information. My schemas for this looks like this:
const mongoose = require("mongoose");
const giveawaySchema = new mongoose.Schema({  
    identifier: String,
    destination: String,
    duration: String,
    price: String,
})
const mainSchema = new mongoose.Schema({
    guild_id: String,
    log_channel_id: String,
    twitterPreferncesType: String,
    twitterPreferncesFollowing: Boolean,
    giveaways: [giveawaySchema],
});
module.exports = mongoose.model("mainSchema", mainSchema);
module.exports = mongoose.model("giveawaySchema", giveawaySchema);
In my Mongo Atlas I have 2 collections mainSchema und giveawaySchema. If I run this code I only get an entry under ‘giveawaySchema’ consisting of this:
_id: ObjectId(62b4f6374894fb3e7826ca72) __v:0
I don’t get any data in the mainSchema collection. Does anyone know what is the error? Thank you for your help in advance.
Advertisement
Answer
You should change your models exports to:
const Main = mongoose.model("mainSchema", mainSchema);
const Giveaway = mongoose.model("giveawaySchema", giveawaySchema);
module.exports = { Main, Giveaway }
Then, try to create the Giveaway entity before the Main one, and add that one to the new Main document:
const mongoose = require('mongoose');
const { Main, Giveaway } = require('../models/mainSchema');
module.exports = {
  async execute(interaction) {
    const newGiveaway = await Giveaway.create({
      identifier: 34,
      destination: 987654321,
    });
    await Main.create({
      guild_id: 1234567890,
      giveaways: [newGiveaway],
    });
    res.status(200).send('Creation completed');
  },
};