Node n8n outputs incorrect data

Hello everyone! I use SeaTable Self-Hosted version. v5.1. The problem is not in the SeaTable, but in the node n8n (i use Community node). This happens on the first node of the n8n pipeline — node outputs erroneous data.

The data in the other columns of these rows is updated normaly. Can you tell me what could be the reason?

Just a debugging question: Where does the “id” formula column in Seatable come from? Can you show the formula and it’s sources?

The reason for my question: Your comparison between n8n an seatable of which records should match is based on the IDs, right? So I just want to make sure that you are not based on wrog assumptions.

Or, to phase it differently: Are the values in the “id” columns unique?

If that all is the case, I would try to use the plain “http request” node to create the API access to seatable by hand, and thus find out whether it is caused by the seatable-specific node, or something in n8n / seatable in general.

Abaer, Greetings! Еhis is a standard formula that shows the row ID - “rowID()”.
Thank you, it’s difficult for me, but I’ll try to make an “http request” using AI)

I’ll try to give you a head start with a few hints for writing the http request as soon as I’m in the office. I guess AI has not enough training data from n8n and Seatable to produce something useful.

I have changed to working with http Requests some time ago, because the Seatable nodes do not cover Seatable’s whole API. Therefore, I cannot say anything about their correct function.

Quick Walk Through:

Create “Header Auth” credential with the API Token from the seatable GUI:

Give it a name, type “Authorization” into the “Name” field, and “Bearer ” into value (without <>" of course)

As your first node, to get a base token from your access token, create such a HTTP Request node:

That will return the access token for that session, and the unique ID of the table.

To retrieve all records for a table, you can use this information in the next HTTP Request. Note that you manually set the “Authorization” header in the header fields as an expression with the result access_token of the previous step, and use the dtable_uuid for form the URL.

In subsequent HTTP Requests, you cannot use “{{ $json.dtable_uuid }}” and “{{ $json.access_token }}”, but need a full reference to the “Get Base Session” node instead: “{{ $(‘Get Base Token’).item.json.access_token }}” and “{{ $(‘Get Base Token’).item.json.dtable_uuid }}”.

I almost forgot: You need to split the result to get single items. All in all more work than the custom seatable nodes, but more flexible.

1 Like

Aber, thank you for your time! I did everything as you wrote, but the result is the same… )

The other fields in this row are also modified when changes are made… :tired_face:

In this case, I hope my contribution has narrowed it down to some problem within Seatable or its API, and not n8n. If you’d need final proof, you could tap the API directly from some other Client (Postman, Bruno) or even with the shell/curl commands from Seatable’s API documentation.

Did you ever try to export your base as .dtable-file, re-import it again, and question that base in the API? That would show whether the base is corrupt in some way. Not that I encountered something like this before, but that’s would be my next move.

1 Like

What does this script return for the row with ID UWI7FN…

from seatable_api import Base, context
base = Base(context.api_token, context.server_url)
base.auth()

dict = context.current_row
for k, v in dict.items():
    print(k,":", v)

Hi everyone,
Let’s see what the script returns for @eash, but I think I just encountered a pretty similar problem (which I was unfortunately unable to reproduce on a simple unit case):

  • tested on SeaTable cloud
  • tried from n8n, api.seatable.io, the python pipeline from inside SeaTable cloud and the seatable_api python library

I have a table with several link and formula columns. While getting the content of the rows using list_rows, some of these formula and link columns are empty (returns None for python or null for api.seatable.io or n8n). While using @rdb’s script however (with context.current_row), I get the data for the considered row.

  • Python and JavaScript base.query functions and the SQL query plugin from inside SeaTable lacks the same data (the plugin returns the rows with these columns empty)
  • JavaScript base.getRows function returns the data correctly however

When exporting the table, data are present. While looking at the content.json inside my dtable export, I realized than the content for the first (0000) column (formula type) are either null or even not present, and the data from the other problematic column (link type) are completely missing to.

Any clue ? I haven’t gone through all my processes again to see which ones are affected, but it’s rather worrying :thinking:

Bests,
Benjamin

I tested the n8n node intensively, I could not reproduce any faulty behaviour. Please share your bases with me and send them to support@seatable.io.

2 Likes

Greetings, cdb! I sent the base to the support address.

The data is being loaded incorrectly from the second table.

Hey guys,
I analysed the problem and I found the root problem for the strange API behaviour.

What is the problem?

API, n8n and python return empty values for some of the link-columns or formula.

Root cause

With 5.2, the behaviour of the link-column was updated regarding links to the same table. If you link to the same table, there should be two columns created. As you can see here, “Parent” is linking to the same table, but there is only one column!

I don’t investigate further, but I assume this is also dependent of “formula” in the first column.

How to fix?

Delete the link column Parent.

Result

API, n8n and python now return the correct values

How to identify problematic columns?

Use the table relationship plugin to identify link columns, that link to the same table again. Then check, if there are two link columns.

Next steps

I have to further investigate with the developers what is happening here! I fill follow up soon.

2 Likes

Hi Christoph,
Thank you for your answer! I deleted the single link column and re-created another one (so a second one was actually created) and everything works fine.

Let’s see if it also worked for @eash ( I hope I didn’t spammed his thread with another problem ?!).

Bests,
Benjamin

Thanks for the decision! Yes, it works!

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.