Kobey Rafferty
Kobey Rafferty

Reputation: 37

Google Datastore not retrieving entities

I have been working with the google cloud library, and I can successfully save data in DataStore, specifically from my particle electron device (Used their tutorial here https://docs.particle.io/tutorials/integrations/google-cloud-platform/)

The problem I am now having is retrieving the data again. I am using this code, but it is not returning anything

    function getData(){
var data = [];
const query = datastore.createQuery('ParticleEvent').order('created');
datastore.runQuery(query).then(results => {

    const event = results[0];
    console.log(results);

    event.forEach(data => data.push(data.data));
});

console.log(data)

}

But each time it is returning empty specifically returning this : [ [], { moreResults: 'NO_MORE_RESULTS', endCursor: 'CgA=' } ] , and I can't figure out why because I have multiple entities saved in this Datastore.

Thanks

Upvotes: 0

Views: 393

Answers (1)

Dan Cornilescu
Dan Cornilescu

Reputation: 39814

In the tutorial.js from the repo mentioned in the tutorial I see the ParticleEvent entities are created using this data:

var obj = {
    gc_pub_sub_id: message.id,
    device_id: message.attributes.device_id,
    event: message.attributes.event,
    data: message.data,
    published_at: message.attributes.published_at
}

This means the entities don't have a created property. I suspect that ordering the query by such property name is the reason for which the query doesn't return results. From Datastore Queries (emphasis mine):

The results include all entities that have at least one value for every property named in the filters and sort orders, and whose property values meet all the specified filter criteria.

I'd try ordering the query by published_at instead, that appears to be the property with a meaning closest to created.

Upvotes: 1

Related Questions