我有一個數據存儲「表」與多個字段。其中一個字段是一個名爲banned
的布爾值。我用它來禁止用戶。根據我的設計,除了由人類主持人設置外,永遠不會設置該字段。但是,這是因爲該字段的任何實例都不是True,它不存在於數據存儲區中。因此,當用戶創建帳戶時,我試圖強制該字段被明確設置爲false。但當然這沒有什麼區別。所以我的問題是這樣的:如何讓應用引擎數據存儲顯示我的布爾字段,即使它是假的?請注意,我只是將該字段添加到現有的數據庫。當然,我正在創建一個新帳戶,以查看該字段是否顯示爲新帳戶的false
以及現有帳戶的常規<missing>
。但沒有。datastore不顯示false布爾值
回答
實際上明確地將布爾值設置爲false
是正確的方法。因此,我的猜測是,您將它設置爲false的地方不會執行。也許它是在沒有達到的if或其他條件之內。所以仔細研究一下。
Java開發人員的注意事項。通常不需要將布爾值設置爲false,因爲這是默認值。但在這種情況下,您必須設置它或將其初始化爲false。
「因爲沒有現場的情況是真實的,它不存在於數據存儲...」
如果設置一個屬性,該實體將擁有它。其他實體是否擁有相同的財產並不重要。如果您設置了一個屬性並且沒有看到它,那麼在某個地方會出現錯誤。
「所以我試圖強行場......通過它明確設置爲false ......」
沒有必要那樣做。如果「false」是默認設置,則不需要存儲它。例如(使用Datastore API):
if (user.isBanned()) {
entity.setProperty("banned", true);
}
Boolean banned = (Boolean) entity.getProperty("banned");
user.setBanned(banned != null && banned);
這是特別有用的,如果「禁止」是索引屬性。因爲希望絕大多數用戶不被禁止,所以它將爲您的空間節省「禁用」的財產 - 併爲其創建索引 - 僅用於禁止的用戶。
當然,真正的問題是,如果你沒有推斷,沒有一個領域,我不能去手動把它變成「真」。所以我需要這個領域的存在。而且,實際上,如果該字段至少有一個「True」實例,那麼所有新實例實際上都會顯示爲「False」。所以真的沒有,因爲沒有任何'真實'。 – 2014-10-28 21:31:57
那麼你是說我的問題是dataNucleus,如果我使用數據存儲api它會工作?我不清楚你剛纔的意思。請爲我澄清。謝謝。 – 2014-10-28 21:34:35
首先,我建議不要在Datastore查看器中手動執行任何操作,除非是緊急情況 - 您可能會輕易破壞數據。如果您沒有適當的管理員應用程序(或至少一個頁面)進行用戶管理,請創建一個簡單的處理程序來禁止用戶。其次,「如果該字段至少有一個True實例,那麼所有新實例實際上將顯示爲False」 - 這不是Datastore的工作方式。你的代碼中有一些東西把(或不)這個屬性設置爲「false」或「true」。 – 2014-10-29 03:27:00
- 1. Restler不接受布爾值false
- 2. Google Cloud Datastore獲取布爾值設置爲false或null的實體?
- 3. FactoryGirl:爲布爾值賦值爲false
- 4. XSL Basics:顯示布爾值的值?
- 5. 顯示布爾「否」
- 6. 重命名true false布爾值
- 7. Javascript布爾值:false && true true results in true
- 8. 布爾值總是返回false
- 9. 關於布爾值的證明,false = true
- 10. 布爾值總是返回false
- 11. servlet顯示布爾值的響應
- 12. Neo4j的回報布爾顯示空值
- 13. NG-顯示未與布爾值
- 14. 在Handlebars中顯示布爾值
- 15. AngularJS,顯示文本的布爾值
- 16. yii2:顯示標籤而不是布爾值複選框的值
- 17. 布爾方法不返回false
- 18. 不顯示布爾爲真的帖子
- 19. php json返回布爾(false)
- 20. fsockopen返回'布爾(false)'
- 21. 顯示java.lang.NullPointerException與布爾
- 22. 獲取布爾值爲true或false,而不是1或0
- 23. 有一個布爾值必須設置爲0而不是false
- 24. Serialize布爾值爲「1」和「0」而不是「true」和「false」
- 25. PHP的FTP ftp_nlist不工作,返回布爾值false
- 26. 使用Grails在Linux環境下不顯示布爾值
- 27. Crystal Reports V11顯示每臺機器的不同布爾值
- 28. 蟒蛇easygui不顯示,基於布爾值
- 29. C#提示布爾值
- 30. 布爾值不變值
這不是Java問題,它是Datastore問題。除非實際使用它,否則不需要將屬性設置爲數據存儲區實體。在這種情況下,財產的缺位與設置爲「虛假」的財產一樣好。 – 2014-10-29 03:19:42