我刚刚开始了解节点的Sails框架。但是,在将用户添加到sails-mysql数据库时,我似乎无法获得唯一的需求。我可以使用相同的用户名和电子邮件添加无限数量的新用户。
从我所读到的内容来看,它应该是有效的,我也尝试了帆的记忆,在那里,这个确切的代码确实有效。是我错过了什么吗?
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,它也可以在fins上工作。
在twitter上得到Sails.js的支持:"它使用了数据库层-怀疑这是自动迁移的问题。你会尝试新的MySQL数据库吗?"
这个答案确实有效,一个新的数据库,一切都很正常:)
更重要的是,由于sails使用自动迁移,如果您最初启动服务器,并且您的模型没有唯一的属性,那么表是在没有唯一(索引)开关的情况下构建的。如果随后将模型中的现有属性更改为unique
,则在随后启动服务器时不会重新生成该表。
开发过程中的一个补救措施是将模型中的迁移设置为drop
,如下所示:
module.exports = {
migrate: 'drop' // drops all your tables and then re-create them Note: You loose underlying.
attributes: {
...
}
};
这样,每次启动服务器时都会重新生成数据库。这当然也会删除任何现有的数据。