下面是user.js
模型中的user
架构-
var userSchema = new mongoose.Schema({
local: {
name: { type: String },
email : { type: String, require: true, unique: true },
password: { type: String, require:true },
},
facebook: {
id : { type: String },
token : { type: String },
email : { type: String },
name : { type: String }
}
});
var User = mongoose.model('User',userSchema);
module.exports = User;
这就是我在控制器中使用它的方式-
var user = require('./../models/user.js');
我就是这样把它保存在数据库里的-
user({'local.email' : req.body.email, 'local.password' : req.body.password}).save(function(err, result){
if(err)
res.send(err);
else {
console.log(result);
req.session.user = result;
res.send({"code":200,"message":"Record inserted successfully"});
}
});
错误-
{"name":"MongoError","code":11000,"err":"insertDocument :: caused by :: 11000 E11000 duplicate key error index: mydb.users.$email_1 dup key: { : null }"}
我检查了数据库集合,没有这样的重复条目存在,让我知道我做错了什么?
FYI-req.body.email
和req.body.password
正在获取值。
我也检查了这篇文章,但没有帮助堆栈链接
如果我完全删除,它就插入文档,否则它会抛出错误“重复”错误,即使我在local.email中有一个条目
检查集合索引。
由于字段集合中索引过时,我出现了这个问题,这些字段应该由不同的新路径存储。
当您指定字段为唯一时,Mongoose会添加索引。
如果您还在开发环境中,我将删除整个数据库,重新使用新的模式。
从命令行
➜ mongo
use dbName;
db.dropDatabase();
exit
错误消息表示已经有一个以null
作为电子邮件的记录。换句话说,您已经有了一个没有电子邮件地址的用户。
与此相关的文件:
如果文档在唯一索引中没有索引字段的值,则索引将为此文档存储一个空值。由于unique约束,MongoDB将只允许一个缺少索引字段的文档。如果有多个文档没有索引字段的值或缺少索引字段,则索引生成将失败,并出现重复键错误。
您可以将unique约束与稀疏索引结合起来,从unique索引中筛选出这些空值并避免错误。
唯一索引
稀疏索引仅包含具有索引字段的文档的条目,即使索引字段包含空值。
换句话说,稀疏索引对于多个都具有null
值的文档是可以的。
稀疏索引
来自备注:
您的错误显示键名为mydb.users.$email_1
,这使我怀疑您对users.email
和users.local.email
都有索引(前者已经旧了,目前没有使用)。从Mongoose模型中删除字段不会影响数据库。如果是这种情况,请使用mydb.users.getindexes()
进行检查,并使用mydb.users.dropindex(
手动删除不需要的索引。
我在一个djs机器人工作,我遇到了一个错误,我不知道如何修复我已经看了https://docs.mongodb.com/manual/indexes/和NodeJs,摩卡和猫鼬,但似乎没有什么帮助这里是信息- 错误发生在这里- 这是我的服务器模型/服务器架构- 最后,这是我得到的错误-
MongoError:E11000重复密钥错误集合:myFirstDatabase。tours索引:rating_1 dup键:{rating:null} 当我使用postman创建数据时,我不理解这个错误,说dup key:{rating:null},在shcema中没有任何评级键,这是从哪里来的?为什么我只能创作一次。 这是我的代码(tourSchema) 这是我试图添加的数据 }
出于某种原因,我的应用程序不允许我创建多个配置文件。下面是服务文件中的设置: //这将查找配置文件(如果存在) //如果一个不存在的话,应该创建一个 它适用于第一个用户,但当我创建另一个用户时,我会得到错误:{“error”:{“message”:“MongoError:E11000重复键错误集合:TownMiner.profiles index:info.subs_1 dup key:{info
问题内容: 我正在尝试将大量用户列表插入MySQL数据库,但是每次尝试都出现错误: 之所以这样,是因为第二列在很多条目上都是空白的,因此在第二列中插入一个空白条目后,就不会再添加另一个了。但是,当我昨天添加了大多数列表时,即使昨天添加的很多条目在第2列中也有一个空白单元格,我也没有一次收到此错误。这是怎么回事? 这是插入1个条目的sql代码。其余的遵循相同的格式: 问题答案: 除了Sabeen的答
如何完成我的要求?
问题内容: 首先,我已经看到许多其他这样的帖子,但是答案不适用于我的特殊情况。以防万一我几个月才学习SQL,对此我没有太多的了解。 这里有张桌子: 如我们所见,先前的值在表中出错了。应该是16个数字,而不仅仅是10个,实际上是不同的数字。 当我尝试插入新值时: 如果bank_card是AUTO_INCREMENT,为什么会有错误?我可以将PK更改到另一个地方吗? 非常感谢任何帮助 问题答案: 的最