Recursive function on Alfresco JS Api ECM

Showing results for 
Search instead for 
Did you mean: 
Member II

Recursive function on Alfresco JS Api ECM


I try to do a recursive function to get all files in a node (even if the files are in different subfolders) and to stock them into an array. But the array I return is unexploitable..

The code I use : 

function fillArray(alfrescoJsApi: AlfrescoJSApi, node:any, array: Array<any>) {
   alfrescoJsApi.nodes.getNodeChildren(node).then( function (data) {
   for(var entry of data.list.entries) {
      if(entry.entry.isFolder == true) {
        let id =;
        let newAlfrescoApi = <AlfrescoJSApi> new AlfrescoJSApi({
          provider: 'ECM'
        fillArray(newAlfrescoApi, id, array);
      } else if(entry.entry.isFile == true) {
        array.push( {[]:});
  }, function (error) {
    console.log('This node does not exist');
  return array;

Any ideas ?



2 Replies
Alfresco Employee

Re: Recursive function on Alfresco JS Api ECM

First of all, I would recommend moving the JS-API outside the foreach, as you create a lot of client objects and that can hurt performance.

Second, you are using async method call, and then apply for loop where you fire more async things. I think the entire function is not waiting for results correctly.

Member II

Re: Recursive function on Alfresco JS Api ECM

Thanks for the answer.


I move the JS-API as you suggested. 

I have an "array" in return, with Objects in it. I can see it in console.log

But I can't use it. For example, array[0] returns undefined.