【问题标题】:How can I filter a one-to-many model relationship so that only active records are returned?如何过滤一对多模型关系以便只返回活动记录?
【发布时间】:2018-08-09 00:16:08
【问题描述】:

在 loopback 3 中,我们使用 mixin 为所有模型添加了一个名为“active”的字段。当通过常用查询方法请求模型时,我们添加了代码以通过活动标志过滤并拒绝非活动记录。

现在我们希望对关系做同样的事情。每当导航关系时,它应该排除所有不活动的资源。你是怎么做到的?

【问题讨论】:

    标签: loopbackjs loopback


    【解决方案1】:

    我们将此添加到我们所有的模型 json 文件中:

      "scope": {
        "where": {
          "active": true
        }
      },
    

    要删除,我们必须添加一个mixin:

      module.exports = function(Model, options) {
        console.log(`Adding softDelete mixin to model ${Model.name}`);
        Model.once("attached", function() {
          Model.deleteById = function(id, auth, cb) {
            // If your tables follow the TableNameID pattern for Ids, then do this: 
            //   `UPDATE ${Model.name} SET active=0 WHERE ${Model.name}ID = ?`;
            var query = `UPDATE ${Model.name} SET active=0 WHERE ID = ?`;
    
            Model.dataSource.connector.query(query, [id], function(err, result) {
              if (err) {
                console.log(err);
              }
              cb(null, { Success: "Record Deleted" });
            });
          };
        });
      };
    

    【讨论】:

      猜你喜欢
      • 2017-06-02
      • 2018-12-15
      • 1970-01-01
      • 2019-10-14
      • 2013-07-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-04
      相关资源
      最近更新 更多