Back

Trouble with Updating Document in Appwrite: "Document Data and Permissions Missing" Error

  • 0
  • Databases
  • Functions
ZiaChoudhary
9 Oct, 2024, 09:58

Hey Appwrite community 👋,

I’m working on a Python function to decrease user credits, but I keep running into an error when calling the update_document method. Here's the error I’m getting:

[ERROR] Error processing request: Error decreasing user credits: The document data and permissions are missing. You must provide either document data or permissions to be updated.

Here’s a snippet of the code I’m using:

TypeScript
    try:
        document = self.database.get_document(
            database_id=self.db_id,
            collection_id=collection_id,
            document_id=document_id
        )
        
        logger.info(f"User credits: {document['credits']}")
        
        free_credits = document['credits'] - 1
        logger.info(f"Decreasing user credits to: {free_credits}")
        data = {'credits': free_credits}
        
        self.database.update_document(
            database_id=self.db_id,
            collection_id=collection_id,
            document_id=document_id,
            data=data,
           permissions=[
                    Permission.read(Role.user(document_id))
                    ]
        )
    except Exception as e:
        raise Exception(f"Error decreasing user credits: {str(e)}")```

What I’ve Tried:
1. Ensured that data is a dictionary with the credits field.
2. Attempted to pass permissions correctly.
3. Printed and verified the data and permissions before calling update_document
Despite these efforts, the error persists. 🥲
TL;DR
Developers facing an issue with updating a document in Appwrite; receiving a "Document Data and Permissions Missing" error when calling the update_document method. They've ensured data is a dictionary and attempted to pass permissions correctly, with no success. **Solution**: The error is related to incorrectly formatting the permissions parameter. Instead of passing it as a list with square brackets, it should be constructed using the `add_permissions` method. Update the permissions assignment as follows: Replace: ```python permissions=[ Permission.read(Role.user(document_id)) ] ``` With: ```python permissions=Permissions().add_permission( Permission.read
Reply

Reply to this thread by joining our Discord

Reply on Discord

Need support?

Join our Discord

Get community support by joining our Discord server.

Join Discord

Get premium support

Join Appwrite Pro and get email support from our team.

Learn more