node.js - Sails.js 中的唯一属性失败

标签 node.js express sails.js waterline

以下代码表示 Sails.js v0.9.4 中的帐户模型。

 module.exports = {

      attributes: {
        email: {
          type: 'email',
          unique: true,
          required: true
        },
        password:{
          type: 'string',
          minLength: 6,
          maxLength: 15,
          required:true
        }
      }

    };

当我通过 Postman 向 localhost:8080/account 发送两个 POST 和一个 PUT 请求时,电子邮件的唯一属性失败。 具体来说,我从 Postman 发送以下 HTTP 请求:

POST http://localhost:8080/account?email=foo@gmail.com&password=123456  
POST http://localhost:8080/account?email=bar@gmail.com&password=123456    
PUT  http://localhost:8080/account?id=1&email=bar@gmail.com  
GET  http://localhost:8080/account

最后一个 GET 请求显示我:

[
  {
    "email": "bar@gmail.com",
    "password": "123456",
    "createdAt": "2013-09-30T18:33:00.415Z",
    "updatedAt": "2013-09-30T18:34:35.349Z",
    "id": 1
  },
  {
    "email": "bar@gmail.com",
    "password": "123456",
    "createdAt": "2013-09-30T18:33:44.402Z",
    "updatedAt": "2013-09-30T18:33:44.402Z",
    "id": 2
  }
]

这应该发生吗?
*对于那些不知道的人,Waterline 默认会生成一个 id,它会在每次插入时自动递增。

最佳答案

这是因为您的架构未在您的磁盘数据库(“.tmp/disk.db”)中更新。

您需要关闭sails,删除您的数据库并重新启动sails。 将使用您的良好架构重建数据库。

注意:数据也会掉!

如果您想保留数据,只需更新“.tmp/disk.db”的架构部分即可。

我为保存数据和通过sails.js 重建架构所做的工作:

  1. 复制“.tmp/disk.db”
  2. 清理“.tmp/disk.db”
  3. 关闭sails.js
  4. 启动sails.js -> 数据库为空,模式已更新
  5. 复制旧的“计数器”部分
  6. 复制旧的“数据”部分

对于唯一字段,您必须在架构(文件“.tmp/disk.db”->“架构”部分)中有这个:

  "xxx": {
    "type": "string",
    "unique": true
  },

希望对你有所帮助。

关于node.js - Sails.js 中的唯一属性失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19101531/

相关文章:

node.js - 有没有人使用 Chrome Lighthouse Node CLI 来自动运行审计(尤其是可访问性)?

javascript - Node.js Mongodb 集成问题; 。节省()

sails.js - 模型属性类型 : what is the difference between json and ref?

node.js - 如何在 Sails.js 上注册 Handlebars 部分外部文件夹?

node.js - Sails.js Same Model 多对多关联

javascript - 加载模板失败

node.js - CoffeeScript path.exists 来自 node.js 的弃用通知

ajax - 从客户端查询时,带参数的 Express.js 路由会产生 404

node.js - React App 和后端 API 最佳实践

node.js - Node/express 应用程序无法使用 mongoose 连接到 Mongodb Atlas