猫鼬在保存时允许重复字段

mongoose allow duplicate fields while saving

我的用户模型如下:

var UserSchema = new Schema({
  name: {
      type: String,
      unique: false
  },
  user_url:{
      type: String
  },
  email: {
    type: String,
    lowercase: true
  },
  role: {
    type: String,
    default: 'individual'
  },
  plan: {
    type: String,
    default: 'basic'
  },
  password: String,
  provider: String,
  salt: String,
  facebook: {},
  twitter: {},
  google: {},
  github: {}
});

如您所见,我正在尝试允许 name 字段中具有重复值的记录。然而,当试图保存它时会抛出一个错误:

Unhandled rejection WriteError({"code":11000,"index":0,"errmsg":"E11000 duplicate key error index: dev.users.$name_1 dup key: { : \"ttp2\" }","op":{"user_url":"ttp2-0","salt":"LY59ooaz+8zZ4z8+dA/7dw==","provider":"local","name":"ttp2","email":"ttp2_1@example.com","password":"wEOc+pejEwfz/s11SWQiMpHxrkh7yLC+q+oa6Tad/QGvH+OFTBMAsVssBRvUKoRjE1dyJkZeh5UvCEJsgXAhNA==","_id":"56b5cc49b6bc872413f6c9fb","__v":0}})

我做错了什么?

据推测,数据库上还有一个唯一索引。如果您从之前定义的 mongoose 模式中删除一个唯一约束,那将不会反映在数据库中。只需通过 mongodb 客户端直接删除该索引即可。

您还可以通过将类似这样的内容放入您的 model.js:

以编程方式更新您的架构

mongooseModel.collection.dropIndex('name_of_your_index');