当前位置: 首页 > 知识库问答 >
问题:

Node.jsMongoError: E11000重复密钥错误集合:

姜鹏程
2023-03-14

我在一个djs机器人工作,我遇到了一个错误,我不知道如何修复我已经看了https://docs.mongodb.com/manual/indexes/和NodeJs,摩卡和猫鼬,但似乎没有什么帮助这里是信息-

错误发生在这里-

const Data = await serverModel.findOne({ serverID: message.guild.id });
    try{
        console.log(`checking if a database exists for ${message.guild}`);
        console.log(Data);
        if(!Data) {
            console.log(`Data base doent exist for ${message.guild}`);
            console.log(`Creating a database for ${message.guild}`);
            const server = await serverModel.create({
                serverID: message.guild.id,
                calling: 'no',
                channel: null,
                talkingWith: null,
                stickyChannel: null,
                stickyMessage: null,
                stickyID: null,
            });
            console.log('shit');
            server.save();
            return;
        }

    }
    catch(err) {
        console.log(err);
    }

这是我的服务器模型/服务器架构-

const mongoose = require('mongoose');

// ServerSchema
const ServerSchema = new mongoose.Schema({
    serverID: { type: String, require: true, unique: true, sparse:true },
    calling: { type: String, require: true, unique: false, sparse:true },
    channel: { type: String, require: true, unique: false, sparse:true },
    talkingWith: { type: String, require: true, unique: false, sparse:true },
    stickyChannel: { type: String, require: true, unique: false, sparse:true },
    stickyMessage: { type: String, require: true, unique: false, sparse:true },
    stickyID: { type: String, require: true, unique: false, sparse:true },
});

const model = mongoose.model('ServerSchema', ServerSchema);

module.exports = model;

最后,这是我得到的错误-

checking if a database exists for Vixo
null
Data base doent exist for Vixo
Creating a database for Vixo  
MongoError: E11000 duplicate key error collection: database.serverschemas index: stickyChannel_1 dup key: { stickyChannel: null }

共有1个答案

谭晓博
2023-03-14

似乎已经有记录与'粘性通道'参数为空值。因此,您可以尝试通过简单地为每个参数赋值来创建新记录吗?

尝试以下代码创建新记录:

`const server = await serverModel.create(
 { serverID: message.guild.id, 
   calling: 'no', 
   channel: 'test', 
   talkingWith: 'test', 
   stickyChannel: 'test, 
   stickyMessage: 'test, 
   stickyID: 'test', 
});`
 类似资料:
  • 出于某种原因,我的应用程序不允许我创建多个配置文件。下面是服务文件中的设置: //这将查找配置文件(如果存在) //如果一个不存在的话,应该创建一个 它适用于第一个用户,但当我创建另一个用户时,我会得到错误:{“error”:{“message”:“MongoError:E11000重复键错误集合:TownMiner.profiles index:info.subs_1 dup key:{info

  • 在node.js,从一个javascript循环,我试图插入一个json对象到一个mongoDB集合,但得到重复的键错误_id列。 {MongoError:E11000重复密钥错误集合:app.Tab2017index:id dup-key:{:ObjectId('5cbc813227b2ca2864b3c66a')} 这是我的javascript代码的一部分,它导致了错误。 以上代码在控制台上显

  • MongoError:E11000重复密钥错误集合:myFirstDatabase。tours索引:rating_1 dup键:{rating:null} 当我使用postman创建数据时,我不理解这个错误,说dup key:{rating:null},在shcema中没有任何评级键,这是从哪里来的?为什么我只能创作一次。 这是我的代码(tourSchema) 这是我试图添加的数据 }

  • 我试图从我的模式中的数组中删除一个特定的值(一个游戏),这是代码: 模式: 错误: MongoError:E11000重复密钥错误集合:mountain。用户索引:游戏。密码_1 errmsg:'E11000重复密钥错误集合:mountain。用户索引:游戏。密码\u 1 dup密钥:{games.password:null}',[Symbol(mongoErrorContextSymbol)]:

  • 问题内容: 我正在尝试将大量用户列表插入MySQL数据库,但是每次尝试都出现错误: 之所以这样,是因为第二列在很多条目上都是空白的,因此在第二列中插入一个空白条目后,就不会再添加另一个了。但是,当我昨天添加了大多数列表时,即使昨天添加的很多条目在第2列中也有一个空白单元格,我也没有一次收到此错误。这是怎么回事? 这是插入1个条目的sql代码。其余的遵循相同的格式: 问题答案: 除了Sabeen的答

  • 下面是模型中的架构- 这就是我在控制器中使用它的方式- 我就是这样把它保存在数据库里的- 错误- 我检查了数据库集合,没有这样的重复条目存在,让我知道我做错了什么? FYI-和正在获取值。 我也检查了这篇文章,但没有帮助堆栈链接 如果我完全删除,它就插入文档,否则它会抛出错误“重复”错误,即使我在local.email中有一个条目