【问题标题】:Unique doesn't work on Node.js Sails.js "sails-mysql"Unique 不适用于 Node.js Sails.js “sails-mysql”
【发布时间】:2014-01-01 20:01:10
【问题描述】:

我刚刚开始接触 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,它也可以工作。

【问题讨论】:

  • 他说他通过 autoPK:false 解决了这个问题,但这确实删除了我的 id 列。他接受了帆记忆作为答案,但这对我没有帮助。

标签: mysql sql node.js sails.js


【解决方案1】:

补充一点,由于sails 使用自动迁移,如果您最初启动服务器并且您的模型没有唯一属性,则表的构建没有唯一(索引)开关。如果您随后将模型中的现有属性更改为unique,则在您随后启动服务器时将不会重建该表。

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

module.exports = {

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

  attributes: {
     ...
  }
};

这样,每次启动服务器时都会重建数据库。当然,这也会删除任何现有数据。

【讨论】:

    【解决方案2】:

    在 Twitter 上获得 Sails.js 的支持:“它使用 db 层 - 怀疑这是自动迁移的问题。你会尝试使用新的 MySQL db 吗?”

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      相关资源
      最近更新 更多