【发布时间】:2017-08-30 04:44:48
【问题描述】:
我正在用 node、mongoose 和 express 做一个项目。
我在猫鼬中有这个架构
const userSchema = new Schema({
local: {
email: {
type: String,
lowercase: true,
unique: true,
....
},
password: {
type: String
}
},
google: {
googleId: String,
email: String
},
....
};
因为我有两种护照策略(经典电子邮件、密码和谷歌的本地)。
但是当我使用不同的谷歌帐户创建两个帐户时。控制台向我显示此错误:
{ MongoError: E11000 duplicate key error collection: xxx.users index: local.email_1 dup key: { : null }
什么? “唯一”检测到重复的两个未定义值?
所以。我怎样才能避免这种情况?
谢谢你:)
【问题讨论】:
-
不。唯一:真,稀疏:真不起作用(同样的 MongoError)。
-
您是否先删除了现有索引?
-
是的。我用 robomongo 删除了所有的收藏。然后我把它放在我的模式中。本地:{电子邮件:{类型:字符串,小写:真,唯一:真,稀疏:真,.... xxx.users 索引:local.email_1 复制键:{ : null }
-
听起来您正在为该字段传递
null的实际值。不使用文档中的local.email字段即可。
标签: node.js mongodb express mongoose passport.js