使用Nodejs更新Google Datastore中的实体

时间:2017-09-22 13:41:25

标签: node.js google-cloud-datastore google-cloud-platform datastore

是否可以更新实体, 只替换输入中的数据并保留实体的其余部分?

2 个答案:

答案 0 :(得分:1)

您希望进行一项交易,您可以在该交易中读取实体,更新价值,编写实体。

function updateEntity (updateKey, newValue) {
  const transaction = datastore.transaction();

  return transaction.run()
    .then(() => transaction.get(fromKey))
    .then((result) => {
      const entity = result[0];

      entity.myProperty = newValue;

      transaction.save(
        {
          key: updateKey,
          data: entity
        }
      );

      return transaction.commit();
    })
    .catch(() => transaction.rollback());
}

答案 1 :(得分:0)

我通过这种方式获得了预期的效果:

   transaction.run(function(err) {
    if (err) {
        res.end(err);
    }

    transaction.get(key, function(err, entity) {
        if (err) {
            res.end(err);
        }
        if (entity) {
            entity.ImportStatus = InputImportStatus;
        } else {
            res.end('No Entity err');
        }

        transaction.save({
            key: key,
            data: entity
        });

        transaction.commit(function(err) {
            if (!err) {
                res.send(`Updated`)
            } else { res.end(err); }
        });
    });
});