如何在post请求中使用sailsjs模型来遵守guid主键

时间:2015-06-30 03:08:10

标签: sails.js postman

如果没有提供id,我想使用新的guid,但如果提供了id,则使用id。 如果存在新的guid,我想更新而不是创建新实例。

如果我发送 {     "姓名":"第一次报告。" ,     " id":" 255af682-43c9-4d75-b0fb-7664ff51304b",     "所有者" :9 } 通过postman post post请求{{url}} / report - 我的服务器运行sailsjs ...第二次创建新记录。

我已经尝试了

        if ( values.hasOwnProperty('id') ) {
            /* ignore */
        } else {
            values.id = uuid.v4();
        }

但是我第二次发帖时却没有注意到主键。

这是报告模型

var uuid = require('node-uuid');

module.exports = {

    attributes: {
        id: {
            type: 'string',
            primaryKey: true
        },
        name: { type: 'string' },
        owner: {
          model: 'client'
        }
    },

    beforeCreate: function(values, callback) {
        if ( values.hasOwnProperty('id') ) {
            /* ignore */
        } else {
            values.id = uuid.v4();
        }
        callback();
    }

};

1 个答案:

答案 0 :(得分:1)

我通过更改模型连接以使用mysql解决了这个问题。

  1. 更改了config / connections.js中的mysql连接信息
  2. 使用必要的权限创建了mysql数据库。
  3. 将config / models.js中的连接值更改为mysql。
  4. 示例错误结果。

    {
      "error": "E_VALIDATION",
      "status": 400,
      "summary": "1 attribute is invalid",
      "invalidAttributes": {
        "PRIMARY": [
          {
            "value": "255af682-43c9-4d75-b0fb-7664ff51304b",
            "rule": "unique",
            "message": "A record with that `PRIMARY` already exists (`255af682-43c9-4d75-b0fb-7664ff51304b`)."
          }
        ]
      }
    }