Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t获取对象I'的属性;我创造了。看起来MongoDB的猫鼬有问题_Javascript_Mongodb - Fatal编程技术网

Javascript Can';t获取对象I'的属性;我创造了。看起来MongoDB的猫鼬有问题

Javascript Can';t获取对象I'的属性;我创造了。看起来MongoDB的猫鼬有问题,javascript,mongodb,Javascript,Mongodb,UPD。用一行代码解决问题: .lean() 我在Model.find(…blabla: [ {“_id”:“578763de6e8e0542195ef4e8”, “文本”:“列表”、“iconCls”:“fa集团fa lg”, “className”:null, “菜单id”:null} {“_id”:“578762146e8e0542195ef4e7”, “iconCls”:“fa集团fa lg”, “类名称”:“面板”, “菜单id”:“578763de6e8e0542195ef4e8”

UPD。用一行代码解决问题: .lean()

我在Model.find(…blabla:

[ {“_id”:“578763de6e8e0542195ef4e8”, “文本”:“列表”、“iconCls”:“fa集团fa lg”, “className”:null, “菜单id”:null}

{“_id”:“578762146e8e0542195ef4e7”, “iconCls”:“fa集团fa lg”, “类名称”:“面板”, “菜单id”:“578763de6e8e0542195ef4e8”, “文本”:“个人”}

{“_id”:“578770aca59f4d173c948376”, “文本”:“信息”, “iconCls”:“xf007”, “className”:null, “菜单id”:null}

{“_id”:“5787715aa59f4d173c94837c”, “文本”:“汽车”, “类名称”:“面板”, “菜单id”:“578763de6e8e0542195ef4e8”,“iconCls”:“xf007”}

{“_id”:“5787721ca59f4d173c94837f”, “文本”:“现在”, “iconCls”:“xf007”, “类名”:“xf007”, “菜单id”:“578770aca59f4d173c948376”}]

我想从它们中构建树菜单:

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;
}
函数构建菜单(源代码){
var菜单=[];//Маааааааааааааааааа

对于(var i=0;i,您可以使用一个对象构建树,用于查找和创建具有随机源顺序的树

var source=[{u id:“578763e8e0542195ef4e8”,“text:“list”,“iconCls:“fa-fa-fa-group fa-lg”,“className:”null,“menu-id:”null},{u-id:“578762146e8e0542195ef4e7”,“iconCls:”fa-fa-fa-fa-fa-lg”,“className:”panel”,“menu-id:“578763e6e8e0542195ef4e8”,“text:”个人“,{-id:”5787705aca59f43c8376”,“text:“文本”:”,“iconCls”:“xf007”,“className”:null,“menu_id”:null},{“\u id”:“5787715aa59f4d173c94837c”,“text”:“cars”,“className”:“panel”,“menu_id”:“578763de6e8e0542195ef4e8”,“iconCls”:“xf007”},{“\u id”:“5787721ca59f4d173c94837f”,“text”:“now”,“iconCls”:“xf007”,“className”:“xf007”,“menu id”:“578770F473C948376”},
树=函数(数据,根){
var r=[],o={};
data.forEach(函数(a){
a、 items=o[a.\u id]&&o[a.\u id]。items;
o[a._id]=a;
if(a.menu_id==根){
r、 推(a);
}否则{
o[a.menu_id]=o[a.menu_id]|{};
o[a.menu_id].items=o[a.menu_id].items | |[];
o[a.menu\u id].items.push(a);
}
});
返回r;
}(来源,空);

console.log(树)
结果应该是什么样的?您想返回什么以及您得到的结果是什么..您能用适当的数据@Antonpegov澄清一下吗?您的意思是控制台中缺少
属性。日志输出?它可能只在所使用的显示中缺少。您能在浏览器中放大对象吗?这也取决于在浏览器中,您可以尝试使用
console.dir
而不是console.log来测试完整对象,或者使用
JSON。stringify
我从mongoDB数据库获取菜单数组,然后将结果与node.js一起发送到浏览器。在浏览器控制台中,我也看不到我的项目:[链接]是的,这是Mongoose的问题beacose,仍在调查…SNK!我认为问题在于我使用Mongoose对象处理mongoDB数据。你的代码在plain node.js中工作,但在我的应用程序中不工作(你的数据排序了吗?我是说首先是父母吗?否,[链接]如果有帮助的话,你可以使用
for
循环,而不是
forEach
。我试过了,我想一切都好了……我已经用数据库屏幕更新了我的帖子。
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;
}
[ { _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)); } }); // })