It is by design. The output of the node always shows only the output produced by this node. This does not mean, however, the data from the previous nodes is not available to the following nodes.
If you check the input of the next node in “JSON” view, you will see the data for all the previous nodes that have run already. There seem to be a bug indeed that “Schema” view showed the misleading message “No fields - item(s) exist, but they’re empty”.
Again the data still should be available and it is a matter of referencing it correctly.
There are a few approaches you can take.
- As you discovered, you could use Set node and bring all the data you need from the previous nodes into the output of this single node
- You can reference any previous node when you need it utilizing the expression described in Output of other nodes
- You might get what you need utilizing Merge node connecting the outputs of the previous nodes
One more important topic related to this discussion is Item linking concepts | n8n Docs. This is the bases of how nodes’ outputs get accessible from the following nodes.
n8n is quite flexible and usually gives you many options you can choose from depending on the task at hand.