node.js - tutorial - mongoose update
Índice único en mangosta no funciona (1)
Estoy tratando de crear un índice único en mangosta para un campo ("event_key"), y quiero que mongodb no se guarde si intento crear una entrada duplicada. Miré los documentos, y parece que todo lo que tengo que hacer es establecer el index: {unique: true}
en el esquema, pero parece que no puedo hacer que funcione. Probé varias permutaciones diferentes y todavía no puedo hacer que funcione.
Además, es required: true
no parece funcionar también, ya que puedo guardar una entrada incluso si no paso una clave de evento. Probablemente me esté perdiendo algo realmente estúpido, y me pregunto si alguien puede ayudarme.
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,
})
Intentando 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)
});
});