Skip to content

Bounteous-Inc/sails-google-cloud-datastore

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sails-google-cloud-datastore

A Sails Waterline adapter for Google Cloud Datastore.

Usage

Install the adapter from npm:

npm install sails-google-cloud-datastore

Then, configure the adapter in https://github.com/balderdashy/sails by modifying your datastore config:

...
models: {
  datastore: 'production'
},
datastores: {
  production: {
    adapter: 'sails-google-cloud-datastore',
    projectId: 'foo',
    keyFilename: '/path/to/keyfile.json'
  }
},
...

Note: the keyFilename configuration is only required if you're not using Application Default Credentials. For more information on setting up explicit service credentials, see here.

Notes

Datastore doesn't have a concept of null, so null values will be transformed to 'NULL' on the fly, and on the off-hand chance you're setting something to 'NULL', that will be transformed to '"NULL"'.

Currently failing ~26 tests or so, mostly because the adapter doesn't support:

  • avg(), count(), sum(), or setSequence().
  • !=, nin, or like in queries

The Google-provided NodeJS library used under the hood doesn't support OR, so queries requiring OR are split into multiple queries instead, e.g.:

SELECT * WHERE first_name='DAN' OR last_name='WILKERSON'

becomes

SELECT * WHERE first_name='DAN'
UNION
SELECT * WHERE last_name='WILKERSON'

Development

To test, install the Google Cloud Datastore Emulator, then run npm run test.

Occasionally the tests will stall, missing when the emulator boots up. I'm guessing my test command is the culprit; improvements welcome!

Licensed under the MIT license.