- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
UPD。一行代码解决了问题:.lean() axplanation here
我在 Model.find(...blablabla :
[ {"_id":"578763de6e8e0542195ef4e8", "text":"lists", "iconCls":"fa fa-group fa-lg", "className":null, "menu_id":null},{"_id":"578762146e8e0542195ef4e7", "iconCls":"fa fa-group fa-lg","className":"panel", "menu_id":"578763de6e8e0542195ef4e8", "text":"personal"},
{"_id":"578770aca59f4d173c948376", "text":"info", "iconCls":"xf007", "className":null, "menu_id":null},
{"_id":"5787715aa59f4d173c94837c", "text":"cars", "className":"panel", "menu_id":"578763de6e8e0542195ef4e8", "iconCls":"xf007"},
{"_id":"5787721ca59f4d173c94837f", "text":"now" ,"iconCls":"xf007", "className":"xf007", "menu_id":"578770aca59f4d173c948376"}]
And I want to build tree menu from them:
function buildMenu(source){
var menu = []; //Массив для нового, уже пирамидального меню
for (var i=0; i<source.length; i+=1){
if(source[i].menu_id === null){ //Выбираем верхние пункты меню
source[i].items = [];
for(var j=0; j<source.length;j+=1){
if(source[j].menu_id !== null){
if(source[i]._id.toString() == source[j].menu_id.toString()){
//найден дочерний пункт меню
source[i].items.push(source[j]);
}
}
}
menu.push(source[i]);
}
}
// Проверка
console.log(menu[0].items);
console.log(menu);
return menu;
}
所以,当我尝试 console.log 我的菜单[0].items - 我有它们:
[ { _id: 578762146e8e0542195ef4e7, iconCls: 'fa fa-group fa-lg', className: 'panel', menu_id: 578763de6e8e0542195ef4e8, text: 'personal' }, { _id: 5787715aa59f4d173c94837c, text: 'cars', className: 'panel', menu_id: 578763de6e8e0542195ef4e8, iconCls: 'xf007' } ]
但是,当我试图返回我的新的令人惊叹的菜单时,我得到了这个:
[ { _id: 578763de6e8e0542195ef4e8, text: 'lists', iconCls: 'fa fa-group fa-lg', className: null, menu_id: null }, { _id: 578770aca59f4d173c948376, text: 'info', iconCls: 'xf007', className: null, menu_id: null } ]
天啊!我的元素在哪里消失了!?!
更新。我期待得到这样的东西:
[ { _id: 578763de6e8e0542195ef4e8, text: 'lists', iconCls: 'fa fa-group fa-lg', className: null, menu_id: null items: [ { _id: 578762146e8e0542195ef4e7, iconCls: 'fa fa-group fa-lg', className: 'panel', menu_id: 578763de6e8e0542195ef4e8, text: 'personal' }, { _id: 5787715aa59f4d173c94837c, text: 'cars', className: 'panel', menu_id: 578763de6e8e0542195ef4e8, iconCls: 'xf007' } ] .....
以下是我获取数据的方式:
.get('/menu', function(req,res){ var user_id = '5784b872a59f4d0f805a617d'; //пользователь boss/boss User.find({_id:user_id}) .populate({ path: 'group', populate: { path: 'menu', ref: 'Menu' } }) .exec(function(err,user) { if (err) { console.log(err.red, req.method, req.url); res.status(500).end(); return err; } else if (!user) { res.status(404).end(); console.log(('Запрос вернул: ' + user).red); } else { res.status(200).send(buildMenu(user[0].group.menu)); } }); // })
菜单:
用户:
团体:
我真的很困惑......
postman 也看不到它们:
最佳答案
您可以使用一个对象来构建树,用于查找并使用随机源顺序创建树。
var source = [{ "_id": "578763de6e8e0542195ef4e8", "text": "lists", "iconCls": "fa fa-group fa-lg", "className": null, "menu_id": null }, { "_id": "578762146e8e0542195ef4e7", "iconCls": "fa fa-group fa-lg", "className": "panel", "menu_id": "578763de6e8e0542195ef4e8", "text": "personal" }, { "_id": "578770aca59f4d173c948376", "text": "info", "iconCls": "xf007", "className": null, "menu_id": null }, { "_id": "5787715aa59f4d173c94837c", "text": "cars", "className": "panel", "menu_id": "578763de6e8e0542195ef4e8", "iconCls": "xf007" }, { "_id": "5787721ca59f4d173c94837f", "text": "now", "iconCls": "xf007", "className": "xf007", "menu_id": "578770aca59f4d173c948376" }],
tree = function (data, root) {
var r = [], o = {};
data.forEach(function (a) {
a.items = o[a._id] && o[a._id].items;
o[a._id] = a;
if (a.menu_id === root) {
r.push(a);
} else {
o[a.menu_id] = o[a.menu_id] || {};
o[a.menu_id].items = o[a.menu_id].items || [];
o[a.menu_id].items.push(a);
}
});
return r;
}(source, null);
console.log(tree);
关于javascript - 无法获取我创建的对象的属性。看起来 MongoDB 的 mongoose 有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457961/
#include #include #include using namespace std::chrono; int main(int arc, char* argv[]) { con
我是 opencv 的新手。当我将 sRGB png 提供给它时,我发现以下代码交换了红色和蓝色 channel 。我应该责怪哪个函数,imread 还是 fromarray? 最佳答案 是的,O
我正在使用以下代码,它缩小了每一行,并且由于某种原因整个用户界面也丢失了。我该如何解决?
它是关于以下设置的:Linux 机器、bash、adb、带有 Busybox 的嵌入式 Linux 目标系统。对于目标系统,以下适用: adb shell echo $SHELL /bin/sh ad
当我在 Android Studio 上创建一个空 fragment 时,它会生成以下代码: /** * A simple {@link Fragment} subclass. * Activit
我正在尝试从 Meteor 应用程序的服务器端发布用户的 Facebook 提要: result = Meteor.http.call 'POST', "https://graph.faceb
目前我有两个不同的查询,它们返回完全相同的结果,但是,更改从中过滤结果的参数会使它们以非常不同的方式运行。 搜索 cartography 时的结果 查询 #1: 22 行/~860 毫秒; SELEC
我已经创建了结构: typedef struct { short s; int i; struct Ss { short s; }; } S;
我想在 Java 中打印反斜杠 t。但每当我尝试时,它实际上都将它作为\t 运算符。双反斜杠不起作用。我该怎么做。 最佳答案 例如通过添加另一个反斜杠来转义反斜杠 System.out.println
我想弄清楚为什么 UIActivityViewController 发送一个稍微转换过的字符串来分享给邮件和微信。 这是我的代码: let activityViewController = UIAct
创建标准 SQLite 游标后,我将使用以下方法遍历条目: while (cursor.moveToNext()) { } 所有行都被正确处理。我读过的所有文档都表明您需要发出 moveToFirst
我正在尝试创建一个基本论坛,但在 SQL 中仅打印一行时遇到问题。这是我的 PHP: {$title}"; } } else { print "failed to reach post
我的新 div 元素 ( ) 似乎隐藏在图像后面。我键入的任何内容都显示在图像后面。我想在背景图片之后继续工作。 这是我的代码: DISPLAY
UPD。一行代码解决了问题:.lean() axplanation here 我在 Model.find(...blablabla : [ {"_id":"578763de6e8e0542195ef4
我在 Ubuntu 16.04 中安装了 Tomcat 8.0.45。我使用 let's encrypt 生成的证书启用了 HTTPS 连接器。它就像一个魅力。但是今天Tomcat无法启动HTTPS连
今天,我在一台全新安装了 Windows 7 Ultimate 64 位的新笔记本电脑上安装了 Visual Studio 2010 Professional。我非常习惯于 Visual Studio
根据 Oracle,我应该能够将 .intValue() 和 .compareTo() 之类的方法应用于 double ,但是当我编写 dbl.toString( ) 例如,在 NetBeans 中,
正在为应用程序开发一些拖放功能,虽然可以使用“重影图像”来完成很多事情,将毒品从一个地方转移到另一个地方,但它们看起来总是有点“褪色” - 因此得名鬼影。是否有可能使这些具有与原始颜色相同的深度?谢谢
我是这方面的新手,很抱歉犯了一些愚蠢的错误。快乐学习。每当我使用 URL : localhost:3000/posts/whatever 时,我都会收到无法获取错误。在你问之前,是的,那是在我将内容放
背景 这自然是合法的: let closure: (Int, Int) -> () = { print($0 + $1) } closure(1, 2) // 3 鉴于,自进化提案实现以来 SE-01
我是一名优秀的程序员,十分优秀!