【发布时间】:2018-07-24 00:15:52
【问题描述】:
我正在开发一个 Nodejs 项目。我必须创建一个接受对象(子类别)的函数,例如:
{
id: 65,
name: 'Outdoor',
parent_id: 2
}
现在我希望我的函数使用数据库中的parent_id 检查父类别并返回一个数组/对象,如下所示:
{
id: 2,
name: 'Furniture',
parent: {
id: 1,
name: 'Residential',
parent: {
id: ...,
name: ...,
parent: {
and so on..
}
}
}
}
这是我到目前为止所做的:
* _get_category_parents(category, _array) {
if(_array === undefined) _array = []
if( category.parent_id !== 0 ) {
const c_parent = yield this.Database.from('categories').where('id', '=', category.parent_id)
_array.push({id: c_parent[0].id, name: c_parent[0].name})
yield this._get_category_parents(c_parent[0], _array)
}
return _array
}
然后像这样调用这个函数:
const parents = yield this._get_category_parents(category)
这会返回一个这样的父母数组:
[
{
"id": 2,
"name": "Furniture"
},
{
"id": 1,
"name": "Residential"
}
]
我希望将 Residential 对象附加到家具的父节点中。
我在这方面花了太多时间,但没有得到我想要的。任何帮助将不胜感激。
【问题讨论】:
-
生成器的实现似乎很棘手......我相信使用 promises 或 async/await 会更容易
-
我认为是简单的递归。
-
@ali 你用的是哪个数据库?一些数据库支持递归查询,允许您使用单个查询获取所有数据——即,而不是使用 javascript 一次查询一条记录。
-
@naomik 我正在使用 mysql
标签: javascript node.js recursion adonis.js