以下是我user
在user.js
模型中的架构-
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 }"}
我检查了数据库集合,没有这样的重复条目,让我知道我在做什么错吗?
仅供参考- req.body.email
和req.body.password
被获取的值。
我也检查了这篇文章,但没有帮助STACK
LINK
如果我将其完全删除,则它将插入文档,否则即使我在local.email中有条目,也会引发错误“ Duplicate”错误
错误消息是说已经有一条记录null
作为电子邮件。换句话说,您已经有一个没有电子邮件地址的用户。
相关文档:
如果文档在唯一索引中没有索引字段的值,则索引将为此文档存储一个空值。由于存在独特的约束,MongoDB将只允许一个缺少索引字段的文档。如果有多个文档没有索引字段的值,或者缺少索引字段,则索引构建将失败,并出现重复的键错误。
您可以将唯一性约束与稀疏索引结合使用,以从唯一性索引中过滤这些空值并避免错误。
唯一索引
稀疏索引仅包含具有索引字段的文档条目,即使索引字段包含空值也是如此。
换句话说,对于多个都具有null
值的文档,稀疏索引是可以的。
稀疏索引
来自评论:
您的错误表明该键已命名mydb.users.$email_1
,这使我怀疑您在users.email
和上都有一个索引users.local.email
(当前该键旧且未使用)。从猫鼬模型中删除字段不会影响数据库。检查mydb.users.getIndexes()
是否存在这种情况,并使用手动删除不需要的索引mydb.users.dropIndex(<name>)
。
我正在使用mongojs和Node.js在mongob中插入一个文档。这是一个REST应用编程接口,只有一个mongojs实例(具有本地驱动器)。每次,有一个api调用,SAME mongojs对象用于执行mongob操作。现在,我在尝试插入文档时得到以下错误。 该文档总是唯一的,我尝试了,它显示索引在_id。有人能帮助我如何解决这个问题吗?
为什么会出现此重复错误-? 提供的所有字段都不是空的。 架构: 职位: 错误: 创建新用户时出错:WriteError({“code”:11000,“index”:0,“errmsg”:“insertDocument::由引起::11000 E11000重复密钥错误索引:iotdb.users.$name_1 dup key:{:null}”,“op:{“username”:“tealou”,“p
问题内容: 我有一个像这样的MongoDb模式 我正在尝试创建一个新用户, 这是使用mongoose ODM在NodeJs中完成的, 这是用于创建的代码: 为了创建新用户,我给属性和值如下: 我收到这样的错误: 我知道这个错误是因为用户名重复,但是 我没有为用户名设置唯一约束。每当添加新行时,我只需要电子邮件是唯一的,用户名就可以重复。 如何实现? 问题答案: @ManseUK可能是正确的,看起来
问题内容: 为什么会出现此重复错误- ? 提供的所有字段都不为空。 架构: 发布: 错误: 创建新用户时出错:WriteError({:“ 11000,” index“:0,” errmsg“:” insertDocument ::由:: 11000 E11000重复键错误导致:iotdb.users。$ name_1 dup key:{: null}“,” op“:{”用户名“:” tealou
下面是模型中的架构- 这就是我在控制器中使用它的方式- 我就是这样把它保存在数据库里的- 错误- 我检查了数据库集合,没有这样的重复条目存在,让我知道我做错了什么? FYI-和正在获取值。 我也检查了这篇文章,但没有帮助堆栈链接 如果我完全删除,它就插入文档,否则它会抛出错误“重复”错误,即使我在local.email中有一个条目
问题内容: 我有重复密钥的问题。很长一段时间找不到答案。请帮助我解决此问题或解释为什么我得到重复的密钥错误。 但是在监视器中,我使用upsert,所以为什么会出现重复错误? monitor.js:62-70 监控架构 指数 并增加财产 utils.js 问题答案: 导致插入文档的ups不是完全原子的操作。将ups视为执行以下离散步骤: 查询标识的文档以进行增补。 如果文档存在,则自动更新现有文档。