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
- Not getting data
IDK what the issue is but I am stuck at a weried but that I am calling this function ``` @override Future<List<CategoryModel>> getCategories() async { t...
- Problem with the new Email policies
when user set those thing from cloud panel and when they open that page again or reload that time it forget what we have checked and it set default to false on ...
- Deleted my account, trying to signup aga...
https://cloud.appwrite.io/console/login?error=%7B%22message%22%3A%22This+email+address+must+already+be+in+its+canonical+form.+Please+remove+aliases%2C+tags%2C+o...