Unique不适用于Node.js Sails.js“sails-mysql”

时间:2013-12-13 22:08:49

标签: mysql sql node.js sails.js

我刚刚开始进入Sails for Node的框架。但是,当将例如用户添加到sails-mysql数据库时,似乎无法获得独特的要求。我可以使用相同的用户名和电子邮件添加无限数量的新用户。

根据我的阅读它应该工作,我也尝试使用sails-memory,并且这个确切的代码确实有效。这是我错过的东西吗?

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;
}

}


};

正如我上面提到的,这适用于内存存储。现在我也尝试过mongodb,它也可以用于鳍。

2 个答案:

答案 0 :(得分:3)

在Twitter上获得了Sails.js的支持:“它使用数据库层 - 怀疑它是自动出现的问题。你会尝试使用新的MySQL数据库吗?”

这个答案确实有效,一个新的数据库,一切都正常工作:)

答案 1 :(得分:1)

只是添加到此,因为sails使用自动迁移,如果您最初启动服务器并且您的模型没有属性为唯一,则表是在没有唯一(索引)开关的情况下构建的。如果您随后将模型中的现有属性更改为unique,则以后启动服务器时不会重建该表。

开发过程中的一个补救措施是将模型中的迁移设置为drop,如下所示:

module.exports = {

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

  attributes: {
     ...
  }
};

这样,每次启动服务器时都会重建db。这当然会丢弃任何现有数据。