簡體   English   中英

數據存儲區不顯示錯誤的布爾值

[英]datastore does not show false boolean

我有一個具有多個字段的數據存儲“表”。 字段之一是稱為banned的布爾值。 我用它來禁止用戶。 根據我的設計,除非由人工主持人設置,否則永遠不要設置該字段。 但事實是,因為該字段的任何實例都不為True,所以它不在數據存儲區中。 因此,我嘗試通過在用戶創建帳戶時將其明確設置為false來強制該字段為誰。 但是,那當然沒有什么區別。 所以我的問題是這樣的: 即使我的布爾字段為false,如何獲取應用引擎數據存儲區以顯示其布爾字段? 請注意,我只是將字段添加到現有數據庫中。 當然,我正在創建一個新帳戶,只是為了查看該字段對於新帳戶是否顯示為false ,對於現有帳戶通常顯示為<missing> 但是什么都沒有。

“因為該字段的任何實例都不為True,所以它不在數據存儲中...”

如果設置屬性,則實體將擁有它。 其他實體是否具有相同的屬性並不重要。 如果您設置了一個屬性卻看不到它,則說明某處存在錯誤。

“因此,我試圖通過明確將其設置為false來強制該字段...”

不需要這樣做。 如果“ false”是默認設置,則無需存儲它。 例如(使用數據存儲區API):

if (user.isBanned()) {
    entity.setProperty("banned", true);
}

Boolean banned = (Boolean) entity.getProperty("banned");
user.setBanned(banned != null && banned);

如果“禁止”是索引屬性,則這特別有用。 由於希望您的絕大多數用戶都不會被禁止,因此它將為您節省空間,因為“禁止”屬性(以及該索引的索引)將僅為禁止用戶創建。

實際上,將布爾值顯式設置為false是正確的方法。 因此,我的猜測是您將其設置為false的地方沒有執行。 可能是在if或其他沒有達到的條件內。 因此,調查一下。

Java開發人員的旁注。 通常,沒有必要將布爾值設置為false,因為這是默認設置。 但是在這種情況下,您必須設置它或將其初始化為false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM