sails.js api 蓝图正在生成 POST 端点,即使是自动递增的 id,如何避免这种情况?
sails.js api blueprints are generating POST endpoints even for auto incremented id, how to avoid this?
例如,如果我创建一个名为 Job
的模型
module.exports = {
attributes: {
id: {
type: 'integer',
autoIncrement: true,
unique: true,
primaryKey: true
},
name: {
type: 'string',
required: true
}
}
蓝图生成
POST /job/:id
方法
但我不想让用户自己指定ID。我希望 ID 由服务器自动递增。所以根本不应该创建提到的 POST api 端点。要创建新作业,应该只有 POST 端点 /job
是否有 api 蓝图选项来更改此行为?
或者除了禁用蓝图和手动定义 api 端点之外是否有任何解决方法?
蓝图路线是开始工作的一个很好的捷径,但最终我觉得在大多数情况下您可能需要比它们提供的更多的自定义行为。
要仅覆盖单个模型的创建访问权限,您可以在该模型的控制器上添加自定义 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 - 如果愿意,您可以一起关闭所有蓝图。
例如,如果我创建一个名为 Job
的模型module.exports = {
attributes: {
id: {
type: 'integer',
autoIncrement: true,
unique: true,
primaryKey: true
},
name: {
type: 'string',
required: true
}
}
蓝图生成 POST /job/:id
方法但我不想让用户自己指定ID。我希望 ID 由服务器自动递增。所以根本不应该创建提到的 POST api 端点。要创建新作业,应该只有 POST 端点 /job
是否有 api 蓝图选项来更改此行为? 或者除了禁用蓝图和手动定义 api 端点之外是否有任何解决方法?
蓝图路线是开始工作的一个很好的捷径,但最终我觉得在大多数情况下您可能需要比它们提供的更多的自定义行为。
要仅覆盖单个模型的创建访问权限,您可以在该模型的控制器上添加自定义 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 - 如果愿意,您可以一起关闭所有蓝图。