【问题标题】:How can I update hasandbelongstomany relations for multiple models at once in strongloop loopback如何在strongloop loopback中一次更新多个模型的hasandbelongstomany关系
【发布时间】:2015-09-26 08:38:34
【问题描述】:

我在 Strongloop Loopback API 中有 2 个模型

  • 产品
  • 标签

在这 2 个模型之间,我定义了一个 hasAndBelongsToMany 关系。 在我的 CMS 中,我希望我的产品具有批量更新功能,我可以在其中选择多个产品并分配多个标签。

我怎样才能轻松地将这些保存到我的 Mysql-DB,而不必遍历每个产品,然后遍历每个标签,然后链接这 2 个?

我查看了文档并找到了添加和删除功能,但这些功能仅将一个模型连接到一个相关模型。是否已经有环回功能来做我想做的事?

【问题讨论】:

  • 有人吗?我是否必须编写本机 SQL 才能保持性能?

标签: orm has-and-belongs-to-many loopbackjs strongloop database-relations


【解决方案1】:

很遗憾,目前还没有批量更新。见https://github.com/strongloop/loopback/issues/1275

【讨论】:

    【解决方案2】:

    我在服务中编写了一个自定义(更新的)函数以及一个助手:

    /*
    * Add multiple objects to a relationship
    * @param {object} origin The object which hold the items
    * @param {array} data The new list to be inserted
    * @param {string} relation name of the relationship, for instance 'cats'
    */
    exports.updateManyRelations = function(origin, data, relation){
      //Destroy all old connections
      return origin[relation].destroyAll().then(function(response){
        //All were deleted and nothing to add
        if(!data || data.length == 0){return [];}
        //We have a list to go through, do the dirty work!
        return addMultipleRelationsToObject(origin[relation], data, []);
      }).then(function(newList){
        // new items created
        return newList
      }, function(error){
        console.log(error);
      });
    }
    
    /*
    * Helper function to add multiple related objects to a object in a correct promise chain
    */
    var addMultipleRelationsToObject = function(objectRelation, list, newList){
      if(list && list.length == 0){return Promise.resolve(newList);}
      var item = list.pop();
      if(!objectRelation.hasOwnProperty("add")){
        return Promise.reject("Relationship is wrong for: " + objectRelation);
      }
      return objectRelation.add(item.id).then(function(newlyAdded){
        newList.push(item);
        return addMultipleRelationsToObject(objectRelation, list, newList);
      });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2015-09-02
      • 1970-01-01
      相关资源
      最近更新 更多