SailsJS和Mongo唯一属性被忽略

时间:2014-08-19 11:30:30

标签: mongodb sails.js waterline

在SailsJS中使用Mongo时,我似乎无法获得实际检查/验证唯一值的唯一属性。我最终得到了相同的用户名。有什么想法吗?我检查了关于此的其他帖子,但这与使用磁盘/内存数据库有关。

使用sails-mongo@0.10.x

进行0.10.x的测试

型号:

module.exports = {

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

Connections.js配置文件

mongo: {
    adapter: 'sails-mongo',
    host: 'localhost',
    port: 27017,
    schema:true,
    migrate: 'safe',
    database: 'mydatabase'
},

3 个答案:

答案 0 :(得分:8)

在GitHub上回答:https://github.com/balderdashy/sails-mongo/issues/181

当您设置migrate: 'safe'时,Waterline将不会尝试在数据库上创建任何索引。独特的工作方式是使用在" migration"。

期间在数据库上创建的唯一索引

如果您在生产环境中,则应自行创建索引并设置migrate: 'safe',以便Waterline不会触及您的生产数据。在开发中,您可以设置migrate: 'alter'并创建这些索引。

答案 1 :(得分:0)

你试过了吗?

  • 停止航行
  • 手动删除相关数据库+表格
  • 开始风帆
  • 再试一次

创建集合时,会在该点创建唯一索引,因此如果在创建没有它的集合后添加唯一属性,则可能无效。直接使用mongodb驱动程序可能会给你一个错误,但由于Waterline是不可知的,它可能并不关心。

答案 2 :(得分:0)

我已经创建了一个钩子模块,可以确保在所有环境https://github.com/didil/sails-hook-mongo-auto-index中创建索引。希望它有所帮助,欢迎提出建议