【问题标题】:discord bot not saving to mongoDBdiscord bot 不保存到 mongoDB
【发布时间】:2020-12-31 10:33:53
【问题描述】:

我正在通过 discordjs 机器人连接到 mongoDB,但数据/数据库似乎没有保存。我已经添加了 IP 地址,并且当数据库连接以确认连接时,我会显示一条控制台消息。

基本设置:

lass EconomyClient extends Client {
  constructor() {
    super();
    this.discord = require("discord.js");
    this.fs = require("fs");
    this.path = require("path");
    this.ms = require("ms");
    this.mongoose = require("mongoose");
    this.commands = new Collection();
    this.timeouts = new Collection();
    this.config = {
      prefix: `h!`,
    };
    this.schema = this.mongoose.model(
      `economy`,
      new this.mongoose.Schema({
        User: String,
        Coins: Number
      })
    );
    const self = this;
    this.economy = {
        async getBal(User) {
            return await self.schema.findOne({ User }).then((d) => d ? d.Coins : 0);
        },
        async addBal(User, Coins) {
            return await self.schema.findOne({ User }), async(err, data) => {
              if(err) throw err;
              if(data) {
                  data.Coins += Coins;
              } else {
                  data = new self.schema({ User, Coins });
              };
              data.save();
            }
        }
    }
  }

还有连接...

start(token, path) {
    this.commandHandler(path);
    this.login(token);
    this.mongoose.connect(
      `mongodb+srv://<dbUser>:<dbPassword>@cluster0.3esa7.mongodb.net/Data?retryWrites=true&w=majority`,
      {
        useNewUrlParser: true,
        useUnifiedTopology: true,
      }
    );
    this.mongoose.connection.on("connected", () =>
      console.log("DB connected ")
    );
    this.on("ready", () => console.log(`${this.user.tag} is now online!`));
    this.on("message", async (message) => {
      if (
        message.author.bot ||
        !message.guild ||
        !message.content.toLowerCase().startsWith(this.config.prefix)
      )
        return;

我创建了一个“work”命令来获取随机数量的硬币和一个“getBalance”命令。工作命令似乎工作 - 至少它选择一个随机数 - 但它似乎没有将其保存到数据库中,因为 getBalance 命令总是返回为零。当我转到我的 mongoDB 帐户中的 collectios 选项卡时,它没有列出任何内容(假设它应该列出?)。

【问题讨论】:

    标签: node.js database mongodb mongoose discord.js


    【解决方案1】:

    括号放错了 --

    曾经:

    async addBal(User, Coins) {
                return await self.schema.findOne({ User }), async(err, data) => {
                  if(err) throw err;
                  if(data) {
                      data.Coins += Coins;
                  } else {
                      data = new self.schema({ User, Coins });
                  };
                  data.save();
                }
    

    注意这里的最后一个括号:self.schema.findOne({ User })

    应该是:

    async addBal(User, Coins) {
                return await self.schema.findOne({ User }, async(err, data) => {
                  if(err) throw err;
                  if(data) {
                      data.Coins += Coins;
                  } else {
                      data = new self.schema({ User, Coins });
                  };
                  data.save();
                })
    

    将括号移到 sn-p 的末尾。

    【讨论】:

      猜你喜欢
      • 2018-01-19
      • 2019-08-12
      • 2020-07-13
      • 2018-08-10
      • 2019-07-06
      • 2021-07-18
      • 2021-06-15
      • 1970-01-01
      • 2021-08-13
      相关资源
      最近更新 更多