javascript - Loop Childens 自定义 Mongodb
问题描述
User.find({ refUser: req.params.userName }).then(function (users) {
var network_users = [];
network_users.push(users);
users.forEach(function (u) {
network_users.push(User.find({ refUser: u.toObject().userName }));
})
return Promise.all(network_users);
我有 4 个用户,我希望收到一个包含所有孩子的 json,但我只收到了第一个和这个第一个的孩子。
有人可以帮我解决这个循环吗?请!非常感谢!!!!
解决方案
function asyncLoop(iterations, func, callback, foo) {
var done = false;
var loop = {
next: function () {
if (done) {
return;
}
if (iterations) {
func(loop);
} else {
done = true;
if (callback) callback(foo);
}
},
isEnd: function () {
return done;
},
refresh: function (it) {
iterations = it;
},
break: function () {
done = true;
callback();
}
};
loop.next();
return loop;
}
function bfs(userName, callback) {
userName = String(userName);
var q = [], res = [];
User.findOne({ "refUser" : userName }).lean().exec(function (err, root) {
root.depth = 0;
q.push(root);
asyncLoop(q.length, function (loop) {
res.push(q[0]);
User.find({ "refUser" : q[0].userName }).lean().exec(function (err, new_nodes) {
if (err) console.log(err);
else {
var d = q[0].depth;
q.shift();
loop.refresh(new_nodes.length + q.length);
if (new_nodes.length > 0) {
new_nodes.forEach(function (new_node) {
new_node.depth = d + 1;
q.push(new_node);
});
}
loop.next();
}
});
}, function () { callback(res) });
});
}
精加工:
bfs(req.params.userName,function(callback){
res.send(callback)
})
推荐阅读
- amazon-web-services - 在 ansible 中使用 aws_secret
- c# - 将pythonecode转换为c#
- c# - 当我可以安全地忽略它时,处理主键异常的正确方法是什么?
- android - 未完成的存根异常
- django - 如果从另一个设备/浏览器登录,Django 会撤销会话密钥
- relational-database - 使类似关系的查询语言对包而不是集合进行操作是否会赋予它更好的性能属性?
- java - 找到具有优于 O(n) 时间复杂度的排序和移位数组的最小值
- node.js - 成功安装 expo-cli 后。'expo' 未被识别为内部或外部命令
- java - 如果字符串的长度不同,则不会保存二进制文件
- javascript - R = TypeError: `then` 期望一个 Promise, received function () { [native code] }