【问题标题】:How to get the time value when an entity is updated/created in Google datastore?如何在 Google 数据存储中更新/创建实体时获取时间值?
【发布时间】:2017-05-02 20:14:32
【问题描述】:

我正在我的节点 js 服务器中创建实体。我的/message 路由创建实体,我的display-message 路由读取实体数据。有没有办法检查实体何时创建或更新?如果没有,是否有另一种方法可以将时间附加到实体对象?基本上,我正在利用时间检查display-message 路由中的实体是否已更新。

消息路由

app.post('/message', function (request, response) {
  let message = request.body.Body;
  response.send("<Response><Message>Heyyo!</Message></Response>");

  let entity = {
      key: key,
      data: {
        message: message
        //send timestamp value information 
      }
  };

  datastore.upsert(entity)
    .then(()=> {

    });

});

显示消息路由

app.get('/display-message', function(req,res){

    datastore.get(key)
        .then(function(results) {
            //read timestamp value information 
            let entity_data = results[0];
            let message_text = entity_data.message;
    });

});

【问题讨论】:

    标签: node.js google-app-engine google-cloud-datastore


    【解决方案1】:

    Cloud Datastore 实体中没有对创建/更新时间的内置支持,但您始终可以在创建/保存实体时在您选择的属性中附加一个:

    const entity = {
      key: key,
      data: {
        message: message,
        my_timestamp_property: new Date()
      }
    };
    

    但请注意,将时间戳放入索引(默认情况下对单个属性进行索引)可能会导致读取和写入延迟增加。请参阅best practices article 了解更多信息。

    【讨论】:

    • 属性被索引是什么意思?当你excludeFromIndexes 时会发生什么?
    • cloud.google.com/datastore/docs/concepts/indexes 有索引的概述。如果您使用excludeFromIndexes,该属性将不会被索引——那么包含时间戳是安全的。
    猜你喜欢
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2014-11-17
    • 2019-09-17
    • 2020-03-29
    相关资源
    最近更新 更多