Gerry
Gerry

Reputation: 2140

querying arangodb view inside transaction

I have an Arango collection called Documents and an arangosearch view called Documents_view. I am trying to query the view inside a transactional database:

collection = "Documents"
document = {
    "name": "foo",
}

txn_db = arango.db.begin_transaction(read=[collection], write=[collection])
txn_db.insert_document(
    collection=collection,
    document=document,
)

cursor = txn_db.aql.execute(
    query="""
        FOR o IN Documents_view
        RETURN {
           name: o.name,
        }
    """
)

print("documents in view:")
print(list(cursor))

cursor = txn_db.aql.execute(
    query="""
        FOR o IN Documents
        RETURN {
           name: o.name,
        }
    """
)

print("documents in collection:")
print(list(cursor))

txn_db.abort_transaction()

The output reads:

documents in view:
[]
documents in collection:
[{'name': 'foo'}]

It seems like the view does not function inside the transaction? I tried adding "Documents_view" to the list of the transaction's read collections as described here. But this results in an error: arango.exceptions.TransactionInitError: [HTTP 404][ERR 1203] collection or view not found

When printing the list of views: print(txn_db.views()), the Documents_view shows. So I am sure it exists. Even more oddly, when printing the full view: print(txn_db.view(name="Documents_view")), it correctly shows the inserted document: [{'name': 'foo'}]

Am I missing something? Is this behavior intended?

Upvotes: 0

Views: 31

Answers (0)

Related Questions