gpt4 book ai didi

orm - 如何在 strongloop 环回中一次更新多个模型的 hasandbelongstomany 关系

转载 作者:行者123 更新时间:2023-12-02 03:24:14 24 4
gpt4 key购买 nike

我在 Strongloop Loopback API 中有 2 个模型

  • 产品
  • 标签

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

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

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

最佳答案

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

/*
* 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);
});
}

关于orm - 如何在 strongloop 环回中一次更新多个模型的 hasandbelongstomany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31292609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com