Rank 1: Thread
I'm using Appwrite Cloud with TablesDB. Calling updateRow with DB operators work as expected:
await databases.updateRow({ databaseId: 'db-id', tableId: 'table-id', rowId: '123', data: { items: Operator.arrayRemove(oldId), },});await databases.updateRow({ databaseId: 'db-id', tableId: 'table-id', rowId: '123', data: { items: Operator.arrayInsert(2, newId), },});But staging these updates in a transaction causes the entire items array to be set to null:
const transaction = await databases.createTransaction();await databases.updateRow({ databaseId: 'db-id', tableId: 'table-id', rowId: '123', transactionId: transaction.$id, data: { items: Operator.arrayRemove(oldId), },});await databases.updateRow({ databaseId: 'db-id', tableId: 'table-id', rowId: '123', transactionId: transaction.$id, data: { items: Operator.arrayInsert(2, newId), },});await databases.updateTransaction({ transactionId: transaction.$id, commit: true});Staging these updates via createOperations also doesn't work, but it only throws an error instead of damaging existing data:
await databases.createOperations({ transactionId: 'transaction-id', operations: [ { action: 'update', databaseId: 'db-id', tableId: 'table-id', rowId: '123', data: { items: Operator.arrayRemove(oldId), } }, { action: 'update', databaseId: 'db-id', tableId: 'table-id', rowId: '123', data: { items: Operator.arrayInsert(2, newId), } } ]});The returned error is:
AppwriteException: Invalid document structure: Attribute "items" must be an array
code: 400,
type: "document_invalid_structure",
response: "{\"message\":\"Invalid document structure: Attribute \\\"items\\\" must be an array\",\"code\":400,\"type\":\"document_invalid_structure\",\"version\":\"1.8.0\"}",