Ashish Anand Ashish Anand - 1 year ago 80
Node.js Question

Multiple select in google datastore query throwing ApiError: Precondition Failed error in node

I'm using following query to retrieve some entities from google Datastore:

var query = datastore.createQuery(namespace,tableName);['displayName','username']);

The above code works fine if I select only one property i.e.'username');

But with multiple select its throwing 412 'Precondition Failed' error. my entity looks like the following:
Entity properties

Answer Source

You need to create a multi-property index in order to use multi-property queries.

Because you are not using App Engine, these indexes need to be manually created.

I have a tutorial here that covers this.

Here are the steps:

  1. Install Java 7 Runtime (or later version)
    • I recommend using Cloud Shell which has Java already installed and configured
  2. Create a folder called WEB-INF
  3. Inside that folder, you need three files:
  4. In the datastore-indexes.xml file, you need to define your multi-property indexes. Follow the documentation.
  5. Install the gcd tool
  6. Finally, run the gcd tool (one directory above the WEB-INF folder)
    • Linux/Mac path/to/ updateindexes --auth_mode=oauth2 .
    • Windows path/to/gcd.cmd updateindexes --auth_mode=oauth2 .

After a few minutes, your indexes should be created.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download