I cant seem to get the unique attribute to actually check/validate for unique values while using Mongo in SailsJS. I end up with identical usernames easily. Any thoughts? I checked the other post about this, but that was related to using Disk/Memory databases.
Sails 0.10.x with sails-mongo@0.10.x
Model:
module.exports = {
attributes: {
username:{
type:'string',
unique:true,
required:true
}
}
};
Connections.js config file
mongo: {
adapter: 'sails-mongo',
host: 'localhost',
port: 27017,
schema:true,
migrate: 'safe',
database: 'mydatabase'
},
Have you tried:
When you create a collection, the unique index is created at that point so if you're adding the unique attribute after you created the collection without it, it probably won't work. Using the mongodb driver directly will probably give you an error but since Waterline is agnostic, it probably doesn't care.
I've created a hook module that ensures indexes are created in all environments https://github.com/didil/sails-hook-mongo-auto-index . Hope it helps , suggestions are welcome
Answered on GitHub here: https://github.com/balderdashy/sails-mongo/issues/181
When you have
migrate: 'safe'
set Waterline will not attempt to create any indexes on the database. Unique works by using the unique indexes created on the database during a "migration".If you are in a production environment, you should create the indexes yourself and keep
migrate: 'safe'
set so that Waterline isn't touching your production data. In development you can setmigrate: 'alter'
and these indexes should be created.