2015-05-31 28 views
1

我在教程中運行命令,並且我注意到我一直收到的異常看起來不像shell的正常運行的一部分。ArangoDB異常

命令

arangosh [_system]> db._update(doc, { someValue: 42 }); 

輸出

JavaScript exception in file 'c:/Program Files/ArangoDB 2.5.4/share/arangodb/js/ 
client/modules/org/arangodb/arango-database.js' at 789,11: [ArangoError 1200: pr 
econdition failed] 

! throw new ArangoError(requestResult); 
!  ^
stacktrace: Error 
    at ArangoDatabase._update (c:/Program Files/ArangoDB 2.5.4/share/arangodb/js 
/client/modules/org/arangodb/arango-database.js:789:11) 

    at <shell command>:1:4 

回答

3

這通常發生,如果你試圖更新已經被更新的文件的修訂版。

例如:

arangosh [_system]> d1 = db.test.save({ value: 1 }) 
{ 
    "_id" : "test/41839385817", 
    "_rev" : "41839385817", 
    "_key" : "41839385817" 
} 

創建一個新文檔。

arangosh [_system]> d2 = db._update(d1, { value: 2 }) 
{ 
    "_id" : "test/41839385817", 
    "_rev" : "41840762073", 
    "_key" : "41839385817" 
} 

如果你現在嘗試更新文檔的原始版本,你會得到一個錯誤:

arangosh [_system]> db._update(d1, { value: 3 }) 
JavaScript exception in file '/usr/local/Cellar/arangodb/HEAD/share/arangodb/js/client/modules/org/arangodb/arango-database.js' at 790,11: [ArangoError 1200: precondition failed] 
! throw new ArangoError(requestResult); 
!  ^
stacktrace: Error 
    at ArangoDatabase._update (/usr/local/Cellar/arangodb/HEAD/share/arangodb/js/client/modules/org/arangodb/arango-database.js:790:11) 
    at <shell command>:1:4 

,因爲文檔的修訂工作時不再有效。

+0

這似乎很奇怪,錯誤包括JS異常的堆棧跟蹤。 – NonSecwitter

+1

有一個完整的堆棧跟蹤被打印,因爲它使您(和其他人)能夠找到引發錯誤的實際位置,包括程序的完整路徑。試想一下,在一個運行在ArangoShell中的更復雜的程序中調用'db._update()',使用多個更新語句,嵌套函數等。我認爲在這種情況下,堆棧跟蹤將會有很大幫助。 – stj

+0

明白了。說得通。謝謝。 – NonSecwitter