我试图在sails.js项目中的模型上实现软删除,我通过覆盖相应控制器中的删除操作来更新名为isDeleted的布尔属性。
我面临的问题是,我需要覆盖相应控制器的查找操作,以便它忽略"删除的"记录,但我需要保留其余的原始功能。要做到这一点,我只需将原始查找操作的代码复制到覆盖中,但它取决于actionUtil模块,并且在执行该模块的需求时,无论我如何更改路由,它都无法管理找到模块。
所以,这就是我的控制器的样子:
var actionUtil = require('/sails/lib/hooks/blueprints/actionUtil'),
_ = require('lodash');
module.exports = {
find: function(req, res){
// Look up the model
var Model = actionUtil.parseModel(req);
if ( actionUtil.parsePk(req) ) {
return require('./findOne')(req,res);
}
// Lookup for records that match the specified criteria
var query = Model.find()
.where( actionUtil.parseCriteria(req) )
.limit( actionUtil.parseLimit(req) )
.skip( actionUtil.parseSkip(req) )
.sort( actionUtil.parseSort(req) );
// TODO: .populateEach(req.options);
query = actionUtil.populateEach(query, req);
query.exec(function found(err, matchingRecords) {
if (err) return res.serverError(err);
// Only `.watch()` for new instances of the model if
// `autoWatch` is enabled.
if (req._sails.hooks.pubsub && req.isSocket) {
Model.subscribe(req, matchingRecords);
if (req.options.autoWatch)
{ Model.watch(req); }
// Also subscribe to instances of all associated models
_.each(matchingRecords, function (record) {
actionUtil.subscribeDeep(req, record);
});
}
res.ok(matchingRecords);
});
},//End .find
destroy: function(req,res){
console.log("Parametro: " + req.param('id') );
Vendedor.update({ id_vendedor: req.param('id') }, { isDeleted: true })
.exec(function (err, goal)
{
if (err)
return res.status(400).json(err);
return res.json(goal[0]);
});
}
};
但是,当启动服务器时,我收到一个错误,说无法找到模块actionUtil。有谁知道我怎么能做到这一点?