今天來說一個在嘗試 LiteDB 的時候遇到的錯誤,因為該套件的底層是使用 BSON ,所以在還原回物件的時候
他預設都是 LiteDB.BsonValue ,因為我直接下一個查詢語法後直接使用 Json.NET , SerializeObject 的時候直接出現錯誤
Unhandled exception. Newtonsoft.Json.JsonSerializationException: Error getting value from 'AsBoolean' on 'LiteDB.BsonValue'.
---> System.InvalidCastException: Unable to cast object of type 'System.String' to type 'System.Boolean'.
at lambda_method23(Closure, Object)
at Newtonsoft.Json.Serialization.ExpressionValueProvider.GetValue(Object target)
--- End of inner exception stack trace ---
這邊我直接對 DB 下指令 關於 %LIKE% 的作法,我期許的是他撈回來的時候就會是該物件,但是其實不是而且直接使用萬用的
Json.NET 也會出現錯誤
下面是會出現錯誤的 code:
後來研究一下,因為他預設會是回來 LiteDB.BsonValue 所以我們必須要把他轉回原本的物件
後來的修正
花了我一點時間找錯誤
reference:
https://www.litedb.org/docs/data-structure/