Ich habe users
Liste in database
:Promises Recursively
let users = []; // Please check the full list at the end of this post
Hier ist meine findUsers
Funktion: (Diese Funktion wie die Suche aus der Datenbank sieht Aber ich schreibe nur die einfache Funktion mit hartCodeDaten.)
function findUsers(user) {
return new Promise(function (resolve) {
resolve(user.users);
});
}
ich möchte, dass alle Benutzer erhalten, die von userId beginnen:
const walkUsers = (user, list) => {
let usrLst = user.users;
list = list || [];
usrLst.forEach((usr) => {
if (usr.users.length > 0) {
list = walkUsers(usr, list);
}
list.push(usr);
});
return list;
};
Diese Funktion gibt das richtige Ergebnis zurück.
[
{ id: '009', name: 'User 9', users: [] },
{ id: '011', name: 'User 11', users: [] },
{ id: '010', name: 'User 10', users: [ [Object] ] },
{ id: '004', name: 'User 4', users: [ [Object], [Object] ] },
{ id: '003', name: 'User 3', users: [ [Object] ] },
{ id: '007', name: 'User 7', users: [] },
{ id: '002', name: 'User 2', users: [ [Object], [Object] ] },
{ id: '008', name: 'User 8', users: [] },
{ id: '005', name: 'User 5', users: [ [Object] ] },
{ id: '006', name: 'User 6', users: [] }
]
Aber das ist nicht mein erwartet. Ich möchte Daten aus der Datenbank (Mungo)
const walkUsers = (user, list) => {
return findUsers(user)
.then((usrLst) => {
list = list || [];
usrLst.forEach((usr) => {
if (usr.users.length > 0) {
walkUsers(usr, list).then((rtnLst) => {
console.log("rtnLst");
console.log(rtnLst);
return rtnLst;
});
}
list.push(usr);
});
return list;
});
};
holen und diese Funktion fehlt Benutzer 009
, 010
, 011
[
{ id: '002', name: 'User 2', users: [ [Object], [Object] ] },
{ id: '005', name: 'User 5', users: [ [Object] ] },
{ id: '006', name: 'User 6', users: [] },
{ id: '003', name: 'User 3', users: [ [Object] ] },
{ id: '007', name: 'User 7', users: [] },
{ id: '008', name: 'User 8', users: [] },
{ id: '004', name: 'User 4', users: [ [Object], [Object] ] }
]
Ich konnte nicht herausfinden, was bin ich falsch. Könnten Sie mir bitte helfen, es zu überprüfen?
Lassen users
Daten überprüfen:
let users = [
{
id: '001',
name: 'User 1',
users: [
{
id: '002',
name: 'User 2',
users: [
{
id: '003',
name: 'User 3',
users: [
{
id: '004',
name: 'User 4',
users: [
{
id: '009',
name: 'User 9',
users: []
},
{
id: '010',
name: 'User 10',
users: [
{
id: '011',
name: 'User 11',
users: []
},
]
},
]
}
]
},
{
id: '007',
name: 'User 7',
users: []
}
]
},
{
id: '005',
name: 'User 5',
users: [
{
id: '008',
name: 'User 8',
users: []
}
]
},
{
id: '006',
name: 'User 6',
users: []
},
]
},
];
Vielen Dank. :) – Luc