【问题标题】:Node.js MongoError: E11000 duplicate key error collection:Node.js MongoError: E11000 重复键错误集合:
【发布时间】:2021-09-19 16:10:17
【问题描述】:

我正在开发一个 djs 机器人,但我遇到了一个我不知道如何修复的错误 我看过https://docs.mongodb.com/manual/indexes/NodeJs, Mocha and Mongoose 但是这里的信息似乎没有任何帮助-

错误发生在这里 -

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);
    }

这是我的 serverModel/serverSchema -

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 }

【问题讨论】:

  • 我会做@Dinesh Ty
  • 我爱你,谢谢你
  • @Karlis Kazaks 如果我的回答有用,请点赞。

标签: node.js mongodb mongoose discord.js


【解决方案1】:

似乎已经有 'stickyChannel' 参数为空值的记录。那么您能否尝试通过简单地为每个参数分配值来创建新记录?

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

`const server = await serverModel.create(
 { serverID: message.guild.id, 
   calling: 'no', 
   channel: 'test', 
   talkingWith: 'test', 
   stickyChannel: 'test, 
   stickyMessage: 'test, 
   stickyID: 'test', 
});`

【讨论】:

    猜你喜欢
    • 2021-03-04
    • 2017-08-27
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 2018-11-11
    • 2020-02-02
    • 1970-01-01
    相关资源
    最近更新 更多