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
- Strange behavior while using transaction...
I am trying to use transaction to create rows in multiple tables and update another table relationship column. but when I commit the transaction, I get `The tra...
- Bug in relational table
I potential found a bug or is there something I am missing? I created 2 tables. User and Coins User has a one to one relation to Coins When attempting to cre...
- Invalid `region` param: Value must be on...
Hi! I'm trying to migrate a small project from the cloud to a self hosted instance to play around but without any success! I cannot initiate a migration witho...