We are using Digital Ocean Spaces for storing files. It is S3 compatible storage, so that we are using parse-server-s3-adapter. However, DO Spaces don't support all S3 features - one of unsupported are tags. In current version of parse-server-s3-adapter every upload fails. The problem is, that ParseFile contains tags object even when no tags are set.
Firstly, I proposed change in parse-server-s3-adapter adapter itself (see pull request https://github.com/parse-community/parse-server-s3-adapter/pull/135), but after some discussion was raised question, if this should not be handled in ParseFile itself. I looked to code and by default ParseFile sets both metadata and tags to empty objects. In this case, s3 files adapter send those options to S3 as empty tags list.
Is there any reason why both tags and metadata are always empty objects and not undefined when not set? Maybe this is architectural decision, but files adapters handles case, when tags and metadata are undefined and in that case, they correctly don't set them.
Current verson of Parse server don't work with Digital Ocean spaces
It should work with Digital Ocean Spaces
Server
4.5.0docker nodejsDigital OceanDatabase
PostgresClient
CloudCodeThanks for reporting.
Can you please write a test case where the tags in Parse.File are not set but an empty tag object is created instead of undefined?
I have classified this as a bug with severity 4:
@mtrezza I will prepare test and look on fix as well.
This is also a blocker for Linode Object Storage. I was able to make it work by downgrading the parse-server-s3-adapter to v1.4.0
Thanks for confirming, @alioguzhan. Would you want to make a PR to fix this?
Sure @mtrezza . If you provide me a little guidance by pointing the starting point, I can make a PR. AFAIK, this is occurring because the parse-server sends tags to the provider no matter what, even if it is not set.
That's correct. I suggest to read the original discussion that lead to the opening of this issue.
The general approach would be to only set the tags property of a Parse.File, if the tags are actually set. Let me know if you need more details, and I can take a closer look at the code.
This should be fixed by https://github.com/parse-community/parse-server/pull/7300