Como usar o Cloud Datastore

Use o Google Cloud Datastore para armazenar os dados do seu aplicativo do App Engine. O Cloud Datastore é um banco de dados criado para garantir escalonamento automático, alto desempenho e facilidade no desenvolvimento de aplicativos.

Este documento mostra como usar a biblioteca de cliente do Google Cloud para armazenar e recuperar dados usando o Cloud Datastore em um aplicativo do App Engine.

Pré-requisitos e configuração

Siga as instruções em "Hello, World!" para Node.js no Google App Engine para configurar o ambiente e o projeto, além de entender como os aplicativos Node.js são estruturados no Google App Engine. Anote e guarde o código do projeto porque você precisará dele para executar o aplicativo de amostra descrito neste documento.

Clonar o repositório

Faça o download ou clone da amostra:

git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples/
cd nodejs-docs-samples/appengine/datastore

Editar a configuração do projeto e definir as dependências

No arquivo package.json, configure @google-cloud/datastore como uma dependência que fornece as funções para usar o Cloud Datastore.

{
  "name": "appengine-datastore",
  "description": "Sample for Google Cloud Datastore on Google App Engine.",
  "version": "0.0.1",
  "private": true,
  "license": "Apache-2.0",
  "author": "Google Inc.",
  "repository": {
    "type": "git",
    "url": "https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git"
  },
  "engines": {
    "node": "8.x.x"
  },
  "scripts": {
    "start": "node app.js",
    "lint": "repo-tools lint",
    "pretest": "npm run lint",
    "system-test": "repo-tools test app",
    "test": "npm run system-test"
  },
  "dependencies": {
    "@google-cloud/datastore": "1.3.4",
    "express": "4.16.2"
  },
  "devDependencies": {
    "@google-cloud/nodejs-repo-tools": "2.2.1",
    "semistandard": "^12.0.1"
  },
  "cloud-repo-tools": {
    "test": {
      "app": {
        "msg": "Last 10 visits:"
      }
    },
    "requiresKeyFile": true,
    "requiresProjectId": true
  }
}

Código do aplicativo

O aplicativo de amostra registra, recupera e exibe IPs de visitantes. A entrada de registro é uma classe simples de dois campos que recebe o tipo visit e é salva no Cloud Datastore usando o comando save do conjunto de dados. Em seguida, as 10 visitas mais recentes são recuperadas em ordem decrescente, usando o comando runQuery do conjunto de dados.

'use strict';

const express = require('express');
const crypto = require('crypto');

const app = express();
app.enable('trust proxy');

// By default, the client will authenticate using the service account file
// specified by the GOOGLE_APPLICATION_CREDENTIALS environment variable and use
// the project specified by the GOOGLE_CLOUD_PROJECT environment variable. See
// https://github.com/GoogleCloudPlatform/google-cloud-node/blob/master/docs/authentication.md
// These environment variables are set automatically on Google App Engine
const Datastore = require('@google-cloud/datastore');

// Instantiate a datastore client
const datastore = Datastore();

/**
 * Insert a visit record into the database.
 *
 * @param {object} visit The visit record to insert.
 */
function insertVisit (visit) {
  return datastore.save({
    key: datastore.key('visit'),
    data: visit
  });
}

/**
 * Retrieve the latest 10 visit records from the database.
 */
function getVisits () {
  const query = datastore.createQuery('visit')
    .order('timestamp', { descending: true })
    .limit(10);

  return datastore.runQuery(query)
    .then((results) => {
      const entities = results[0];
      return entities.map((entity) => `Time: ${entity.timestamp}, AddrHash: ${entity.userIp}`);
    });
}

app.get('/', (req, res, next) => {
  // Create a visit record to be stored in the database
  const visit = {
    timestamp: new Date(),
    // Store a hash of the visitor's ip address
    userIp: crypto.createHash('sha256').update(req.ip).digest('hex').substr(0, 7)
  };

  insertVisit(visit)
    // Query the last 10 visits from Datastore.
    .then(() => getVisits())
    .then((visits) => {
      res
        .status(200)
        .set('Content-Type', 'text/plain')
        .send(`Last 10 visits:\n${visits.join('\n')}`)
        .end();
    })
    .catch(next);
});

const PORT = process.env.PORT || 8080;
app.listen(process.env.PORT || 8080, () => {
  console.log(`App listening on port ${PORT}`);
  console.log('Press Ctrl+C to quit.');
});

Como usar arquivos index.yaml

O aplicativo de amostra faz consultas simples. As consultas mais detalhadas do Datastore exigem um ou mais índices, que precisam ser especificados em um arquivo index.yaml. O upload desse arquivo é feito junto com o aplicativo. É possível criá-lo manualmente ou gerá-lo automaticamente ao testar o app no local.

Para saber mais

Consulte a documentação do Cloud Datastore para ver todas as informações sobre ele, incluindo otimizações e conceitos.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentos do ambiente flexível do App Engine para Node.js