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

时间:2019-02-22 13:36:53

标签: javascript node.js loopbackjs

我有两个模型:

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 不会删除该项目。

我的问题是:如何覆盖此默认方法或防止删除记录?

我尝试过:

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()方法?

1 个答案:

答案 0 :(得分:1)

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

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