8

我在数据存储中创建了一个登录名(种类)。在登录中,我创建了两个字段用户名和密码。当用户更改密码时,我想更新数据存储区中的字段值。但是当我使用这段代码时,

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Entity passwordchange = new Entity("Login");
passwordchange.setProperty("password", "admin@123");
datastore.put(passwordchange);

它创建一个新行并插入密码“admin@123”,而不是在同一行中更新新密码。

谁能建议我如何更新字段的数据。

4

1 回答 1

21

如果要更新实体,有两种选择:

A. 通过其 ID 从 Datastore 中检索此实体。更新属性。将其放回数据存储区。

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。

我希望您不要将密码存储为字符串。

于 2012-12-28T13:50:38.387 回答