Unique doesn't work on Node.js Sails.js “sails-mysql”

天大地大妈咪最大 提交于 2020-01-16 01:42:47

问题


I've just started to get into the framework of Sails for Node. But it seems like I can't get the unique- requirements to work when adding for example users to the sails-mysql database. I can atm add unlimited number of new users with the same username and email.

From what I have read it should work, I did also try with sails-memory and there this exact code did work. Is it something I have missed out?

module.exports = {

attributes: {

username: {
  type: 'string',
  required: true,
  unique: true
},

firstname: {
  type: 'string',
  required: true
},

lastname: {
  type: 'string',
  required: true
},

password: {
  type: 'string',
  required: true
},

birthdate: {
  type: 'date',
  required: true
},

email: {
  type: 'email',
  required: true,
  unique: true
},

phonenumber: 'string',

// Create users full name automaticly
fullname: function(){
  return this.firstname + ' ' + this.lastname;
}

}


};

As I mentioned above, this does work with the memory-storage. And now I have also tried with mongodb where it does work fins as well.


回答1:


Got support from Sails.js on twitter: "it uses the db layer- suspect it's an issue with automigrations. Would you try in a new MySQL db?"

This answer did work, a new db and everything was just working :)




回答2:


Just to add to this, since sails uses auto-migrations, if you initially start the server and your model does not have an attribute as unique, the table is built without the unique (index) switch. If you then change an existing attribute in the model to unique, the table will not be rebuilt the subsequent times you start the server.

One remedy during development is to set migrations in your model to drop like this:

module.exports = {

  migrate: 'drop' // drops all your tables and then re-create them Note: You loose underlying.

  attributes: {
     ...
  }
};

That way, the db would be rebuilt each time you start the server. This would of course drop any existing data as well.



来源:https://stackoverflow.com/questions/20576875/unique-doesnt-work-on-node-js-sails-js-sails-mysql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!