sails.js api蓝图即使对于自动递增的id也会生成POST端点,如何避免这种情况?

时间:2018-03-14 14:51:58

标签: sails.js waterline

例如,如果我创建一个名为Job

的模型
module.exports = {
  attributes: {
    id: {
      type: 'integer',
      autoIncrement: true,
      unique: true,
      primaryKey: true
    },

    name: {
      type: 'string',
      required: true
    }
}

蓝图生成 / job /:id

上的POST方法

但我不希望允许用户自己指定ID。我希望服务器自动增加ID。因此,根本不应创建提到的POST api端点。要创建新作业,应该只有POST端点 / job

是否有api蓝图可以选择更改此行为? 或者除了禁用蓝图和手动定义api端点之外还有其他解决方法吗?

1 个答案:

答案 0 :(得分:0)

蓝图路线是开始工作的一个很好的捷径,但最终我觉得你可能想要比大多数情况下提供的更多自定义行为。

要仅在单个模型上覆盖创建访问权限,您可以在该模型的控制器上添加自定义create方法。所以,在/api/controllers/JobController.js

module.exports = {
    create: function(req, res) {
        var createParams = req.body;
        // do whatever you want with the passed in parameters here
        createParams.customCreate = true;
        delete createParams.id;

        Job.create(createParams).exec(function(err, createdJob) {
            if (err) {
                // handle the error
            } else {
                return res.send(createdJob);
            }
        });
    },
    // ...
};

如果您想一次管理所有型号的蓝图路线,请参阅here - 如果愿意,可以一起关闭蓝图。