appwrite / appwrite/appwrite

🐛 Bug Report: User object empty prefs field is an array instead of an object

Open
#6,360 2 comments 1 reaction 1 assignee Claimed by @stnguyen90 View on GitHub
api / realtime bug product / functions
Dominant language
TypeScript
Stars
57.4k
Forks
5.7k
Avg merge
14h 50m
Merged PRs (30d)
276

Description

### 👟 Reproduction steps

When a `users.*.delete` event triggers a cloud function for a user that has empty preferences, the User object `prefs` is an array instead of an object.

**Reproducible code**

````
Future main(final context) async {
final client = Client()
.setEndpoint(Platform.environment['APPWRITE_ENDPOINT']!)
.setProject(Platform.environment['APPWRITE_FUNCTION_PROJECT_ID'])
.setKey(Platform.environment['API_KEY']);

try {
final user = User.fromMap(context.req.body);

await Databases(client).deleteDocument(
databaseId: Platform.environment['DATABASE_ID']!,
collectionId: Platform.environment['USERS_COLLECTION_ID']!,
documentId: user.$id,
);

return context.res.empty();
} on Exception catch (e, stack) {
context.error('$e \n $stack');

return context.res.send('Server error', 500);
}
}
````

### 👍 Expected behavior

The User object from `context.req.body` should have `prefs:{}`

### 👎 Actual Behavior

The User object from `context.req.body` has `prefs:[]`

### 🎲 Appwrite version

Appwrite Cloud

### 💻 Operating system

MacOS

### 🧱 Your Environment

Appwrite 1.4 cloud functions

runtime: dart 2.17.0
dart_appwrite: 8.0.0

### 👀 Have you spent some time to check if this issue has been raised before?

- [X] I checked and didn't find similar issue

### 🏢 Have you read the Code of Conduct?

- [X] I have read the [Code of Conduct](https://github.com/appwrite/.github/blob/main/CODE_OF_CONDUCT.md)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.