如何为GAE数据存储区设置密钥? [英] How to set your key for GAE Datastore?

查看:66
本文介绍了如何为GAE数据存储区设置密钥?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

任何人都有一个主意,为什么向/display-message发出GET请求时仍然出现此错误? { Error: Key path element must not be incomplete: [created_timestamp: ].我没有正确设置密钥吗?您可以在此处 https://jarvis- hd-live-151521.appspot-preview.com/display-message?last_updated=0

Anyone have an idea why I keep getting this error when I make a GET request to /display-message? { Error: Key path element must not be incomplete: [created_timestamp: ]. Am I not setting my key the right way? You can view the backend here https://jarvis-hd-live-151521.appspot-preview.com/display-message?last_updated=0

const key = datastore.key('created_timestamp', 5689413791121408);

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

  var d = new Date;
  var time = d.getTime();

  let entity = {
      key: key,
      data: {
        message: message,
        created: time
      }
  };


  datastore.upsert(entity)
    .then(() => {
        console.log("Post UPDATED successfully");
    });



});


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

    let last_updated_time = req.query.last_updated;     


    function updateMessage(timestamp, message) {
        var output = {
            success: 1,
            data: message,
            timestamp: timestamp
        };

        return res.json(output);
    }

    function checkMessage() {
        console.log("Starting to check message function");
        var timeout;
        clearTimeout(timeout);

        datastore.get(key)
            .then((entities) => {
                let entity_data = entities[0];
                console.log(entity_data);

                let message_text = entity_data.message;
                let new_timestamp_value = entity_data.created;

                if(!last_updated_time || last_updated_time < new_timestamp_value) {
                    updateMessage(new_timestamp_value, message_text);
                }
                else {
                    console.log("No new messages at this time");

                    timeout = setTimeout(function(){
                        checkMessage();
                    }, 1000 * 10); //10 seconds
                }

            })
            .catch(function(){
                console.log("Promise Rejected");
                console.log(err);
            })
    };

    checkMessage();

});

推荐答案

我相信datastore.key()需要一个列表:

const key = datastore.key(['created_timestamp', 5689413791121408]);

https://googlecloudplatform.github.io/google-cloud-node/#/docs/datastore/0.6.0/datastore?method=key

这篇关于如何为GAE数据存储区设置密钥?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆