Constructor
new Datastore(optionsopt)
Parameters:
Name | Type | Attributes | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
object |
<optional> |
Configuration options. Properties
|
Examples
Import the client library
```
const {Datastore} = require('@google-cloud/datastore');
```
Create a client that uses <a href="https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application">Application Default Credentials (ADC)</a>:
```
const datastore = new Datastore();
```
Create a client with <a href="https://cloud.google.com/docs/authentication/production#obtaining_and_providing_service_account_credentials_manually">explicit credentials</a>:
```
const datastore = new Datastore({
projectId: 'your-project-id',
keyFilename: '/path/to/keyfile.json'
});
```
Retrieving Records
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
// Records, called "entities" in Datastore, are retrieved by using a key. The
// key is more than a numeric identifier, it is a complex data structure that
// can be used to model relationships. The simplest key has a string `kind`
// value, and either a numeric `id` value, or a string `name` value.
//
// A single record can be retrieved with Datastore#key and
// Datastore#get.
//-
const key = datastore.key(['Company', 'Google']);
datastore.get(key, function(err, entity) {
// entity = The record.
// entity[datastore.KEY] = The key for this entity.
});
//-
// <h3>Querying Records</h3>
//
// Create a query with Datastore#createQuery.
//-
const query = datastore.createQuery('Company');
//-
// Multiple records can be found that match criteria with
// Query#filter.
//-
query.filter('location', 'CA');
//-
// Records can also be ordered with Query#order.
//-
query.order('name');
//-
// The number of records returned can be specified with
// Query#limit.
//-
query.limit(5);
//-
// Records' key structures can also be queried with
// Query#hasAncestor.
//-
const ancestorKey = datastore.key(['ParentCompany', 'Alphabet']);
query.hasAncestor(ancestorKey);
//-
// Run the query with Datastore#runQuery.
//-
datastore.runQuery(query, (err, entities) => {
// entities = An array of records.
// Access the Key object for an entity.
const firstEntityKey = entities[0][datastore.KEY];
});
```
Paginating Records
```
// Imagine building a website that allows a user to sift through hundreds of
// their contacts. You'll likely want to only display a subset of these at
// once, so you set a limit.
//-
const express = require('express');
const app = express();
const NUM_RESULTS_PER_PAGE = 15;
app.get('/contacts', (req, res) => {
const query = datastore.createQuery('Contacts')
.limit(NUM_RESULTS_PER_PAGE);
if (req.query.nextPageCursor) {
query.start(req.query.nextPageCursor);
}
datastore.runQuery(query, (err, entities, info) => {
if (err) {
// Error handling omitted.
return;
}
// Respond to the front end with the contacts and the cursoring token
// from the query we just ran.
const frontEndResponse = {
contacts: entities
};
// Check if more results may exist.
if (info.moreResults !== datastore.NO_MORE_RESULTS) {
frontEndResponse.nextPageCursor = info.endCursor;
}
res.render('contacts', frontEndResponse);
});
});
```
Creating Records
```
// New entities can be created and persisted with Datastore#save.
// The entity must have a key to be saved. If you don't specify an
// identifier for the key, one is generated for you.
//
// We will create a key with a `name` identifier, "Google".
//-
const key = datastore.key(['Company', 'Google']);
const data = {
name: 'Google',
location: 'CA'
};
datastore.save({
key: key,
data: data
}, (err) => {
if (!err) {
// Record saved successfully.
}
});
//-
// We can verify the data was saved by using Datastore#get.
//-
datastore.get(key, (err, entity) => {
// entity = {
// name: 'Google',
// location: 'CA'
// }
});
//-
// If we want to update this record, we can modify the data object and re-
// save it.
//-
data.symbol = 'GOOG';
datastore.save({
key: key, // defined above (datastore.key(['Company', 'Google']))
data: data
}, (err, entity) => {
if (!err) {
// Record updated successfully.
}
});
```
Deleting Records
```
// Entities can be removed from Datastore by passing the entity's key object
// to Datastore#delete.
//-
const key = datastore.key(['Company', 'Google']);
datastore.delete(key, (err) => {
if (!err) {
// Record deleted successfully.
}
});
```
Transactions
```
// Complex logic can be wrapped in a transaction with
// Datastore#transaction. All queries and updates run within
// the transaction will be applied when the `done` function is called.
//-
const transaction = datastore.transaction();
transaction.run((err) => {
if (err) {
// Error handling omitted.
}
const key = datastore.key(['Company', 'Google']);
transaction.get(key, (err, entity) => {
if (err) {
// Error handling omitted.
}
entity.symbol = 'GOOG';
transaction.save(entity);
transaction.commit((err) => {
if (!err) {
// Transaction committed successfully.
}
});
});
});
```
Queries with Ancestors
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const customerId1 = 2993844;
const customerId2 = 4993882;
const customerKey1 = datastore.key(['Customer', customerId1]);
const customerKey2 = datastore.key(['Customer', customerId2]);
const cookieKey1 = datastore.key(['Customer', customerId1, 'Cookie',
'cookie28839']); // child entity const cookieKey2 =
datastore.key(['Customer', customerId1, 'Cookie', 'cookie78984']); // child
entity const cookieKey3 = datastore.key(['Customer', customerId2, 'Cookie',
'cookie93911']); // child entity
const entities = [];
entities.push({
key: customerKey1,
data: {
name: 'Jane Doe',
address: '4848 Liller'
}
});
entities.push({
key: customerKey2,
data: {
name: 'John Smith',
address: '4848 Pine'
}
});
entities.push({
key: cookieKey1,
data: {
cookieVal: 'dj83kks88rkld'
}
});
entities.push({
key: cookieKey2,
data: {
cookieVal: 'sj843ka99s'
}
});
entities.push({
key: cookieKey3,
data: {
cookieVal: 'otk82k2kw'
}
});
datastore.upsert(entities);
const query = datastore.createQuery().hasAncestor(customerKey1);
datastore.runQuery(query, (err, entities) => {
for (let entity of entities) {
console.log(entity[datastore.KEY]);
}
});
const query2 = datastore.createQuery().hasAncestor(customerKey2);
datastore.runQuery(query2, (err, entities) => {
for (let entity of entities) {
console.log(entity[datastore.KEY]);
}
});
datastore.runQuery(query2, (entities) => {
console.log(entities);
});
```
Members
KEY
Access the Key from an Entity object.
namespace
DatastoreRequest
DatastoreRequest class.
- See:
KEY
Access the Key from an Entity object.
MORE_RESULTS_AFTER_CURSOR
This is one of three values which may be returned from
Datastore#runQuery, Transaction#runQuery, and
Query#run as info.moreResults
.
There may be more results after the specified end cursor.
MORE_RESULTS_AFTER_LIMIT
This is one of three values which may be returned from
Datastore#runQuery, Transaction#runQuery, and
Query#run as info.moreResults
.
There may be more results after the specified limit.
NO_MORE_RESULTS
This is one of three values which may be returned from
Datastore#runQuery, Transaction#runQuery, and
Query#run as info.moreResults
.
There are no more results left to query for.
Query
Query class.
- See:
Transaction
Transaction class.
- See:
v1
Properties:
Name | Type | Description |
---|---|---|
DatastoreClient |
constructor |
Reference to v1.DatastoreClient. |
- See:
Methods
createAggregationQuery(query)
Create an aggregation query from a Query.
Parameters:
Name | Type | Description |
---|---|---|
query |
Query |
A Query object. |
getDatabaseId() → {string}
Gets the database id that all requests will be run against.
Returns:
Type | Description |
---|---|
string |
The database id that the current client is set to that requests will run against. |
getIndexesStream(optionsopt) → {ReadableStream.<Index>}
Get all of the indexes in this project as a readable object stream.
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
options |
GetIndexesOptions |
<optional> |
Configuration object. See Datastore#getIndexes for a complete list of options. |
Returns:
Type | Description |
---|---|
ReadableStream.<Index> |
index(id) → {Index}
Get a reference to an Index.
Parameters:
Name | Type | Description |
---|---|---|
id |
string |
The index name or id. |
Returns:
Type | Description |
---|---|
Index |
keyFromLegacyUrlsafe(key, locationPrefix) → {string}
Helper to convert URL safe key string to entity key object
This is intended to work with the "legacy" representation of a datastore "Key" used within Google App Engine (a so-called "Reference").
Parameters:
Name | Type | Description |
---|---|---|
key |
entity.Key |
Entity key object. |
locationPrefix |
string |
Optional . The location prefix of an App Engine project ID. Often this value is 's~', but may also be 'e~', or other location prefixes currently unknown. |
Returns:
Type | Description |
---|---|
string |
Created urlsafe key. |
Example
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const urlSafeKey = 'ag9ncmFzcy1jbHVtcC00NzlyEwsSB0NvbXBhbnkiBkdvb2dsZQw';
datastore.keyFromLegacyUrlsafe(key);
```
transaction(optionsopt) → {Transaction}
Create a new Transaction object.
Parameters:
Name | Type | Attributes | Description | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
options |
object |
<optional> |
Configuration object. Properties
|
Returns:
Type | Description |
---|---|
Transaction |
Example
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const transaction = datastore.transaction();
```
(static) double(value) → {object}
Helper function to get a Datastore Double object.
Parameters:
Name | Type | Description |
---|---|---|
value |
number |
The double value. |
Returns:
Type | Description |
---|---|
object |
Example
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const threeDouble = datastore.double(3.0);
```
(static) geoPoint(coordinates) → {object}
Helper function to get a Datastore Geo Point object.
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
coordinates |
object |
Coordinate value. Properties
|
Returns:
Type | Description |
---|---|
object |
Example
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const coordinates = {
latitude: 40.6894,
longitude: -74.0447
};
const geoPoint = datastore.geoPoint(coordinates);
//-
// List all companies that are located at 40.123 latitude
// and -74.0447 longitude.
//-
const query = datastore.createQuery('Company');
const companyQuery = query
.filter('geoPoint.latitude', datastore.double(40.123))
.filter('geoPoint.longitude', datastore.double(-74.0447));
```
(static) int(value) → {object}
Helper function to get a Datastore Integer object.
This is also useful when using an ID outside the bounds of a JavaScript Number object.
Parameters:
Name | Type | Description |
---|---|---|
value |
number |
The integer value. |
Returns:
Type | Description |
---|---|
object |
Example
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const sevenInteger = datastore.int(7);
//-
// Create an Int to support long Key IDs.
//-
const key = datastore.key([
'Kind',
datastore.int('100000000000001234')
]);
```
(static) isDouble(value) → {boolean}
Helper function to check if something is a Datastore Double object.
Parameters:
Name | Type | Description |
---|---|---|
value |
* |
Returns:
Type | Description |
---|---|
boolean |
Example
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
datastore.isDouble(0.42); // false
datastore.isDouble(datastore.double(0.42)); // true
```
(static) isGeoPoint(value) → {boolean}
Helper function to check if something is a Datastore Geo Point object.
Parameters:
Name | Type | Description |
---|---|---|
value |
* |
Returns:
Type | Description |
---|---|
boolean |
Example
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
const coordinates = {
latitude: 0,
longitude: 0
};
datastore.isGeoPoint(coordinates); // false
datastore.isGeoPoint(datastore.geoPoint(coordinates)); // true
```
(static) isInt(value) → {boolean}
Helper function to check if something is a Datastore Integer object.
Parameters:
Name | Type | Description |
---|---|---|
value |
* |
Returns:
Type | Description |
---|---|
boolean |
Example
```
const {Datastore} = require('@google-cloud/datastore');
const datastore = new Datastore();
datastore.isInt(42); // false
datastore.isInt(datastore.int(42)); // true
```
(static) isKey(value) → {boolean}
Helper function to check if something is a Datastore Key object.
Parameters:
Name | Type | Description |
---|---|---|
value |
* |
Returns:
Type | Description |
---|---|
boolean |