首页 > 解决方案 > OverwriteModelError Mongoose

问题描述

我似乎OverwriteModelError在使用 Mongoose 进行查询时遇到了问题。

我正在创建一个 Discord Bot,它会在我的论坛上自动更新玩家标题,但是,当 Discord 玩家角色更改时,它会将其记录到控制台,但如果相同的玩家或不同的玩家随后被更改,则会引发此错误

https://gyazo.com/2af4c0a967da3cf16b8157f8ca7abcbd

这是在我的 forumsUpdate.js 中执行的代码

const Discord = require("discord.js");
const superagent = require("superagent");
const errors = require("../utils/errors.js");
const api = require("../utils/api.js");
const mongoose = require('mongoose');

module.exports = {
  updateUser: async (updateUserTag) => {
    try {
      const findUser = new mongoose.Schema({ discordUsername: String });
      const User = mongoose.model('players', findUser);

      const query = await User.find({ discordUsername: updateUserTag }).select('forums -_id');
      query instanceof mongoose.Query;
      const docs = await query;

      console.log(docs)
    } catch (ex) {
      return console.log(ex)
    }
  }
};

在我的 index.js 中调用了该函数

bot.on('guildMemberUpdate', async (oldMember, newMember) => {
    let updateUserID = (await bot.fetchUser(newMember));
    let updateUserTag = updateUserID.tag;

    forumsTitleUpdate.updateUser(updateUserTag);
})

任何帮助或建议将不胜感激。

标签: javascriptmongodbmongoosediscord.js

解决方案


每次您尝试更新用户时,const findUser = new mongoose.Schema({ discordUsername: String });都会对不允许的调用进行编码。

设置Schema外部updateUser方法,它不会失败。

const mongoose = require('mongoose');
const findUser = new mongoose.Schema({ discordUsername: String });

推荐阅读