【发布时间】:2020-08-18 17:45:04
【问题描述】:
我将首先描述我想要实现的目标。我目前正在为我的 Destiny 2 Clan 开发一个不和谐的机器人,我正在尝试实现的命令之一是 joinid 命令,您可以在其中使用该命令和@一个用户,它会返回用户的 steamID。不幸的是,discord 机器人无法访问 discord 用户的连接。我想出的解决方案是为氏族成员进行 Oauth2 登录,当他们登录时,他们授权应用程序从 discord API 获取连接信息,然后将其保存在数据库中。 Oauth2 应用程序已完成并正在运行,问题在于机器人从数据库中获取数据。到目前为止,我只尝试了 Model.find,当我昨天尝试时,它返回的信息量远远超过包含的实际文档,但是今天它只返回 [object Object],所以我一定搞砸了代码。
可能值得一提的是,这是我的第一个 JavaScript 项目。
这是 MongoDB 文档的架构:
const UserSchema = new mongoose.Schema({
discordId: {type: String, required: true},
username: {type: String, required: true},
connection: {type: Array, required: true}
});
const DiscordUser = module.exports = mongoose.model('User', UserSchema);
我附上了文档在数据库中的外观图片
这是我目前的命令代码:
if (cmd.includes("joinid")) {
playerid = cmd.slice(10, -1);
const steamidentifier = DiscordUser.find({ discordId: playerid});
console.log(`${steamidentifier}`);
}
通过查看图像,您可以看到每个连接都有单独的对象(即 Spotify、battle.net、steam、twitch 等)但据我所知,steamID 是唯一的 ID仅由数字组成的 17 位数字,所以这就是我计划用来识别 steamID 的。 所以我要问的是,是否有一种方法可以首先使用 discordId 从数据库中获取实际文档,然后是否有一种方法可以轻松地从数组中选择实际的 steamID。
【问题讨论】:
标签: node.js mongodb mongoose discord.js