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\"}",
Maybe I'm using DB operators wrong but documentation is limited and the typescript typings in node-appwrite are even unusable (cannot assign string Operators to columns of incompatible types). In any case, I'm surprised that this behavior isn't caught and fixed pre-release
Recommended threads
- How to Display File in Web?
I'm trying to use Appwrite's Storage to store images and display them in my app, however when I use the `getFileView`, `getFileDownload` or `getFilePreview` met...
- Project Paused Despite Daily Active Usag...
I noticed that my project was automatically **paused**, even though it is actively being used. The project is an **attendance application** that is used daily b...
- Hi Appwrite Support Team,My project has ...
Details: Project ID: 69a69f6f00113ed0e8e4 Region: SFO (sfo.cloud.appwrite.io) Error Response: Affected: ALL endpoints — Functions, Databases, Storage, Health, ...