防止删除相关模型实例 - Loopback 3

Prevent deleting related model instance - Loopback 3

我有两个模型:

User.json

"relations": {
    "items": {
        "type": "hasMany",
        "model": "Item",
        "foreignKey": "userid"
    },}

Item.json

"relations": {
    "user": {
        "type": "belongsTo",
        "model": "User",
        "foreignKey": "userid"
    },}

环回生成此端点:

删除/User/{userid}/items/{itemid}

我想覆盖默认的删除方法,这样项目就不会被删除,只有 属性 active 将设置为 false

My question is: how can I override this default method or prevent deleting record?

我试过:

Item.once('attached',function(){
    Item.destroyById = function(filter,auth, cb){
        console.log('This is a overridden method')
    }
})

好像没有执行。

并且:

Item.observe('before delete', function(ctx, next) {  
    var err = new Error("Not deleted");  
    next(err)
});

它有效(项目未被删除)但抛出了我想避免的错误。 也许有办法将一些参数传递给 next() 方法?

也许您可以为该操作实现连接器挂钩,您可以在其中动态修改数据库查询。

var connector = Model.getDataSource().connector;
connector.observe('before execute', function(ctx, next) {
  // preview your query and modify it as desired
  console.log(ctx);
  // so when you call next it will be executed in a shape you've created
  next();
});

这里有一些关于它的更多信息: https://loopback.io/doc/en/lb3/Connector-hooks.html