Cloud Datastore插入和Upsert问题

时间:2018-09-06 07:59:34

标签: node.js google-cloud-datastore

在实体键下插入其他属性时,我遇到一个奇怪的问题。

enter image description here

我试图在不修改现有属性的情况下再添加一个属性,但是,下面的代码创建了新属性,并删除了现有数据(显示为空白) 根据GCP文档,我尝试使用插入和upsert不能解决问题

server.post('/submit', (req, res,) => {


    const OutTime  = new Date();

 const key = datastore.key([VData, 5717023518621696])
 const entity = {
   key:key,
   method: 'insert',
   data: { content: OutTime },
 }

 datastore.insert(entity).then(() => {
  // Task inserted successfully.
});
// [END datastore_upsert]

});

https://cloud.google.com/datastore/docs/concepts/entities

1 个答案:

答案 0 :(得分:2)

这是预料之中的,您不能仅添加/修改现有实体的属性-整个实体都需要重写。因此,您需要State Enrollment Severity CA 100 Low MA 25 Medium CA 25 Medium WA 40 High CA 40 High ID 40 High 实体,向其添加新属性,然后get / update将其返回到数据存储。

来自您引用的文档中的Updating an entity(强调我的意思):

  

所提供的数据将覆盖现有实体。整个对象必须发送到Cloud Datastore 。如果实体不存在,则   更新将失败。如果要更新或创建实体,请使用   upsert,如前所述。使用transaction可让您   在单个原子中执行upsertget操作   交易。

并且来自Creating an entity(重点是我):

  

您可以使用update将实体保存到Cloud Datastore   如果存在,实体将覆盖该实体