2017-10-19 77 views
0

我目前正在爲Luvit編寫驅動程序,Lua庫與當前的Lua-ReQL驅動程序不兼容。我會如何解決這個問題?
有問題的數據,JSON是,特定數據集發生錯誤

{"Settings":{"bet":"b!","admin_roles":[],"co_owner_roles":[],"voting_chan":"default---channel","mod_log":"true","log_channel":"default---channel","voting":"false","verify":"true","audit_log":"true","audit_log_chan":"audit-log-test","mod_log_chan":"modlog","banned_phrases":[],"mod_roles":[],"verify_chan":"default---channel","mod_log_channel":"default---channel","verify_role":"Member"},"Roles":[],"Cases":[],"Votes":[],"Timers":[],"id":"284381751084843008","Ignore":[]} 

的序列化的數據是從服務器

[1,[53, [[15, [[14, ["test"]], "table"]], {"Ignore":[],"id":"284381751084843008","Cases":[],"Roles":[],"Timers":[],"Settings":{"bet":"b!","admin_roles":[],"co_owner_roles":[],"voting_chan":"default---channel","mod_log":"true","log_channel":"default---channel","voting":"false","verify":"true","audit_log":"true","audit_log_chan":"audit-log-test","mod_log_chan":"modlog","banned_phrases":[],"mod_roles":[],"verify_chan":"default---channel","mod_log_channel":"default---channel","verify_role":"Member"},"Votes":[]}]],{}] 

的數據是:

Expected between 1 and 3 elements in a raw term, but found 0. 

回答

0

的問題是陣列中的一個空着。什麼是你正在建立的實際查詢?是r.db('test').table('table').update(<your document>)

我正在查看源文件term_walker.cc。它看起來像傳遞給UPDATE的對象(整個對象{"Ignore"...})將被包裝成[MAKE_OBJ, {"Ignore"...}](隨着AST被處理,代碼行rewrite(src, Term::MAKE_OBJ);) ,然後對象{"Ignore"...}將以與optargs參數相同的方式進行處理 - 他們的價值領域得到walk調用他們。

看起來裸露的物體看起來像被包裝在[3, <object>](因爲MAKE_OBJ = 3)一樣。當用戶編寫表達式{"abc": r.add(1, 2)}時,這應該是MAKE_OBJ表達式,並且子表達式需要由客戶端庫轉換爲適當的ReQL-ese。我的猜測是你的客戶端庫不是遍歷對象並進行這種轉換。你需要這樣做,這樣裸露的數組將變成他們變成的任何東西(MAKE_ARRAY術語?)。如果你想讓你的客戶端傳遞一個沒有被遍歷和處理的對象,我猜你應該使用DATUM

把我在這裏所說的一切都視爲準則,只有90%的把握。

+0

非常感謝!我決定使用基準,它就像一個魅力! <3 – DannehSC