Índice único en la mongoose no funciona

Estoy tratando de crear un índice único en mongoose para un campo (“event_key”), y quiero que mongodb no guarde si bash crear una entrada duplicada. Miré los documentos y parece que todo lo que necesito hacer es establecer el index: {unique: true} en el esquema, pero parece que no puedo hacer que funcione. He intentado varias permutaciones diferentes y todavía no puedo hacer que funcione.

Además, se required: true no parece funcionar también, ya que puedo guardar una entrada aunque no pase una event_key. Probablemente me estoy perdiendo algo realmente estúpido, y me pregunto si alguien puede ayudar.

Esquema

 var WistiaAnalyticSchema = new Schema({ event_key: {type: String, required: true, index: {unique: true}}, visitor_key: String, created: {type: Date, default: Date.now}, ip: String, }) 

Tratando de agregar a la base de datos

 WistiaAnalytic.create({event_key: '1402230270487e0.2668362990953028'}, function(err) {}); WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {}); WistiaAnalytic.create({ip: '1402229819163e0.4385743956081569'}, function(err) {}); WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) { console.log(err) }); 

Mongoose crea índices en segundo plano, por lo que debe retrasar sus llamadas de creación hasta que se complete la creación del índice. Una forma de hacerlo es con el evento 'index' del modelo:

 WistiaAnalytic.on('index', function(err) { WistiaAnalytic.create({event_key: '1402230270487e0.2668362990953028'}, function(err) {}); WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {}); WistiaAnalytic.create({ip: '1402229819163e0.4385743956081569'}, function(err) {}); WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) { console.log(err) }); });