Вот так у меня заработало, это правильное решение или нужно иначе?
cursor.forEach(function(doc) {
var find = {
pid: doc._id.toString()
};
function cnt() {
return new Promise(function(resolve, reject) {
self.Struct.find(find).count().then(function(count) {
var kids = false;
if(count > 0) {
kids = true;
}
resolve({
id: doc._id,
value: doc.name,
webix_kids: kids
});
});
});
}
data.push(cnt());
}, function(err) {
if(err == null) {
Promise.all(data).then(function(data){
res.json({
success: true,
error: 0,
data: data,
parent: pid
});
})
} else {
reject(err);
}
});