Node.js 使猫鼬属性不再唯一

Node.js 使猫鼬属性不再唯一,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我在猫鼬身上犯了一个奇怪的错误。当用户注册时,他们会给出所属组织的名称。以前,这需要是唯一的。我的模式是: var mongoose = require('mongoose'); var Schema = mongoose.Schema; var Organisation = new mongoose.Schema({ name: { type: String, required: true, unique: true }, createdById: {

我在猫鼬身上犯了一个奇怪的错误。当用户注册时,他们会给出所属组织的名称。以前,这需要是唯一的。我的模式是:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var Organisation = new mongoose.Schema({
  name: {
    type: String,
    required: true,
    unique: true
  },
  createdById: {
    type: Schema.Types.ObjectId,
    ref: 'User'
  },
  createdOn: {
    type: Date,
    "default": Date.now
  },
  availableUntil: {
    type: Date
  }
});

Organisation.path('name').validate(function(value, done) {
  var self = this;

  if (!self.isNew) {
    return done(true);
  } else {
    //mongoose.models['Organisation'] or self.model('Organisation')
    mongoose.models['Organisation'].count({
      name: value
    }, function(err, count) {
      if (err) {
        return done(err);
      }

      return done(!count)
    });
  }
}, "This email already exists");

mongoose.model('Organisation', Organisation);
但现在没关系了,一个组织的名称不需要是唯一的。因此,我改为:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var Organisation = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  createdById: {
    type: Schema.Types.ObjectId,
    ref: 'User'
  },
  createdOn: {
    type: Date,
    "default": Date.now
  },
  availableUntil: {
    type: Date
  }
});


mongoose.model('Organisation', Organisation);
注意如何删除
unique:true

我重新启动了服务器,但奇怪的是,我仍然得到错误:

  name: 'MongoError',
  message: 'E11000 duplicate key error index: redmatter.organisations.$name_1 dup key: { : "delete me" }',
  driver: true,
  code: 11000,
  index: 0,
  errmsg: 'E11000 duplicate key error index: redmatter.organisations.$name_1 dup key: { : "delete me" }',
  getOperation: [Function],
  toJSON: [Function],
  toString: [Function] }

这怎么可能?当我不在乎名称是否唯一时,为什么会出现重复键错误?

“注意,唯一性:true已被删除。”->nope?oops typo,它已被删除,相同的错误解决了,我必须删除索引是的,一旦代码至少触发一次,从代码中删除不会改变任何内容。这是因为mongoose将创建唯一索引。你必须把它放在数据库的一边。“注意,唯一性:true被删除了。”->nope?oops打字错误,它被删除了,同样的错误。我发现,我必须删除索引是的,一旦代码至少触发一次,从代码中删除不会改变任何东西。这是因为mongoose将创建唯一索引。你必须把它放在数据库的一边。