Node.js MongoError: E11000 重复键错误集合:
Posted
技术标签:
【中文标题】Node.js MongoError: E11000 重复键错误集合:【英文标题】:Node.js MongoError: E11000 duplicate key error collection: 【发布时间】: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 如果我的回答有用,请点赞。 【参考方案1】:似乎已经有 'stickyChannel' 参数为空值的记录。那么您能否尝试通过简单地为每个参数分配值来创建新记录?
尝试以下代码来创建新记录:
`const server = await serverModel.create(
serverID: message.guild.id,
calling: 'no',
channel: 'test',
talkingWith: 'test',
stickyChannel: 'test,
stickyMessage: 'test,
stickyID: 'test',
);`
【讨论】:
以上是关于Node.js MongoError: E11000 重复键错误集合:的主要内容,如果未能解决你的问题,请参考以下文章
MongoError:拓扑被破坏,我该如何修复它? [复制]
MongoError:此 MongoDB 部署不支持可重试写入。请将 retryWrites=false 添加到您的连接字符串
MongoError:此 MongoDB 部署不支持可重试写入。请将 retryWrites=false 添加到您的连接字符串