gothinkster / gcp-datastore-cloud-functions-realworld-example-app

Serverless GCP Cloud Functions + Datastore implementation of RealWorld Backend
https://realworld.io
145 stars 41 forks source link

Taglist api returns a null string when an article exists without a taglist + performance once db grows #47

Open quantuminformation opened 4 years ago

quantuminformation commented 4 years ago

I have the following data for articles:

Screenshot 2019-10-08 at 19 21 06

When running this query: const tags = (await ds.createQuery(namespace, 'Article').select('tagList').run())[0];

Will return

Screenshot 2019-10-08 at 19 22 44

I feel that we should not return this null item. Or the client should handle it.

what do you think?

quantuminformation commented 4 years ago

Also, this query will retrieve every taglist from every article. Would it not be better to filter them at the db level instead of performing the filtering on the cloud function.

  async getAllTags() {
    const tags = (await ds.createQuery(namespace, 'Article').select('tagList').run())[0];
    const dedupeObj = {};
    for (let i = 0; i < tags.length; ++i) {
      dedupeObj[tags[i].tagList] = 1;
    }
    return Object.keys(dedupeObj);
  },