gpt4 book ai didi

javascript - 递归包括Sequelize?

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

我有可以有子类别的类别

当我做 findAll 时,我想包括所有嵌套的,但我不知道深度。

var includeCondition = { 
include: [
{
model: models.categories,
as:'subcategory', nested: true
}]
};

models.categories.findAll(includeCondition)
.then(function (categories) {
resolve(categories);
})
.catch(function (err) {
reject(err);
})
});

结果只给我带来了一层嵌套的包含。
[  
{
dataValues:{

},
subcategory:{
model:{
dataValues:{

}
// no subcategory here
}
}
}
]

我可以以某种方式使 sequalize 包含那些嵌套的子类别吗?

最佳答案

如果找到这个,解决方案很少
第一个更复杂,但会提供更好的性能:

这个是关于在MySQL中实现分层数据结构
我喜欢这里的指南

http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

一种名为嵌套集模型的模型。

我自己实际实现的第二个解决方案是递归扩展,这个解决方案使用了大量的 mysql 请求,我相信可以改进,但它是一个快速且运行良好的解决方案。事情是像这样用于每个类别功能

var expandSubcategories = function (category) {
return new promise(function (resolve, reject) {
category.getSubcategories().then(function (subcategories) {
//if has subcategories expand recursively inner subcategories
if (subcategories && subcategories.length > 0) {
var expandPromises = [];
_.each(subcategories, function (subcategory) {
expandPromises.push(expandSubcategories(subcategory));
});

promise.all(expandPromises).then(function (expandedCategories) {
category.subcategories = [];

_.each(expandedCategories, function (expandedCategory) {
category.subcategories.push(expandedCategory);
}, this);


//return self with expanded inner
resolve(category);
});

} else {
//if has no subcategories return self
resolve(category);
}
});
});
};

所以它遍历类别并递归地扩展它们。

也许这也会对某人有所帮助。

关于javascript - 递归包括Sequelize?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50145478/

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