A Sails Waterline adapter for Google Cloud Datastore.
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.
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()
, orsetSequence()
.!=
,nin
, orlike
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'
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.