discord bot 不保存到 mongoDB
Posted
技术标签:
【中文标题】discord bot 不保存到 mongoDB【英文标题】:discord bot not saving to 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 选项卡时,它没有列出任何内容(假设它应该列出?)。
【问题讨论】:
【参考方案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 的末尾。
【讨论】:
以上是关于discord bot 不保存到 mongoDB的主要内容,如果未能解决你的问题,请参考以下文章
Discord.js Bot 赠品命令:.array() 不是函数