我有一个数据存储"表"有多个字段。其中一个字段是一个名为banned
的布尔值。我用它来禁止用户。根据我的设计,除了人类主持人之外,永远不会设置该字段。但问题是因为该字段的实例没有True,它在数据存储区中不存在。因此,当用户创建帐户时,我尝试通过明确地将其设置为false来强制该字段。但当然这没有任何区别。所以我的问题是这样的:如何让app-engine数据存储区显示我的布尔字段,即使它是假的?请注意,我刚刚将该字段添加到现有数据库中。当然,我正在创建一个新帐户,以查看该字段是否会显示为新帐户的false
以及现有帐户的常规<missing>
。但没什么。
答案 0 :(得分:2)
&#34;因为该字段的实例不是True,它在数据存储中不存在...&#34;
如果您设置了一个属性,那么该实体将拥有该属性。其他实体是否具有相同的属性并不重要。如果你设置了一个属性而没有看到它,那么就会出现错误。
&#34;所以我试图通过明确地将其设置为假来逼迫该领域......&#34;
没有必要这样做。如果&#34; false&#34;是默认设置,您不需要存储它。例如(使用数据存储API):
if (user.isBanned()) {
entity.setProperty("banned", true);
}
Boolean banned = (Boolean) entity.getProperty("banned");
user.setBanned(banned != null && banned);
如果&#34;禁止&#34;这是特别有用的。是一个索引属性。因为,希望绝大多数用户都不会被禁止,所以它将为您节省空间,因为#34;禁止使用#34;属性 - 以及它的索引 - 将仅为被禁用的用户创建。
答案 1 :(得分:0)
实际上,将布尔值显式设置为false
是正确的方法。因此我的猜测是你将它设置为false的地方没有执行。也许它在if或其他未达到的条件中。所以请研究一下。
Java开发人员的附注。通常没有必要将布尔值设置为false,因为这是默认值。但在这种情况下,您必须设置它或将其初始化为false。