不确定如何在sails.js 中执行此操作,但我希望能够在API 上创建新对象时,检查该对象的ID 是否存在,如果存在,发送409 冲突响应,并且如果没有,请像平常一样创建对象。
为了便于讨论,我创建了一个品牌模型。
我假设我将覆盖 BrandController 中的 create 函数,根据品牌搜索,req.param('id')
如果存在,则发送错误响应。但我不确定我是否正确执行此操作,因为我似乎无法得到任何工作。
有人有想法吗?
不确定如何在sails.js 中执行此操作,但我希望能够在API 上创建新对象时,检查该对象的ID 是否存在,如果存在,发送409 冲突响应,并且如果没有,请像平常一样创建对象。
为了便于讨论,我创建了一个品牌模型。
我假设我将覆盖 BrandController 中的 create 函数,根据品牌搜索,req.param('id')
如果存在,则发送错误响应。但我不确定我是否正确执行此操作,因为我似乎无法得到任何工作。
有人有想法吗?
我最终为这个特定的用例使用了一个策略。
在 下config/policies
,我创建了一个 isRecordUnique 策略:
/**
* recordIsUnique
*
* @module :: Policy
* @description :: Simple policy to check that a record is unique
*
* @docs :: http://sailsjs.org/#!documentation/policies
*
*/
module.exports = function(req, res, next) {
Brand.findOne({ id: req.body.id}).done(function (err, brand) {
if (brand) {
res.send(409);
} else {
next();
}
});
};
这使我能够避免覆盖任何 CRUD 函数,并且它似乎符合策略的定义,因为它只检查一件事。
为了将我的策略与我的创建功能联系起来,我config/policies
通过添加以下内容进行了修改:
BrandController: {
create: 'isRecordUnique'
}
而已。我花了很长时间才弄清楚这一点,但我认为这是一个好方法。
好吧,因为这是 MVC,所以您正确地认为 Control 应该执行此逻辑。但是,由于这是主要 id 的基本唯一性,模型应该知道/理解并帮助执行这一点。