我在数据存储中创建了一个Login(Kind)。在登录中,我创建了两个字段username和passsword。当用户更改密码时,我想更新数据存储区内的字段值。但是当我使用这段代码时,
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity passwordchange = new Entity("Login");
passwordchange.setProperty("password", "admin@123");
datastore.put(passwordchange);
它会创建一个新行并插入密码“admin @ 123”,而不是在同一行中更新新密码。
有人可以建议我如何更新字段的数据。
答案 0 :(得分:21)
如果要更新实体,您有两种选择:
一个。通过其ID从数据存储区中检索此实体。更新属性。把它放回数据存储区。
try {
loginEntity = datastore.get(KeyFactory.createKey("login", id));
loginEntity.setProperty("password", "admin@123");
datastore.put(loginEntity);
} catch (EntityNotFoundException e) {
// This should never happen
}
B中。使用相同的ID创建新实体。添加所有属性。放入数据存储区 - 它将覆盖旧实体。
Entity loginEntity = new Entity("login", id);
loginEntity.setProperty("password", "admin@123");
datastore.put(loginEntity);
在这两个示例中,id是您要更改的实体的ID。
我希望您不要将密码存储为字符串。