2024-01-29

[C#] 一個輕量化的Database - LiteDB 關於 BsonValue 轉回物件問題

今天來說一個在嘗試 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/