Не удается получить доступ к хранилищу данных через функцию Google Cloud, используя node.js - PullRequest
0 голосов
/ 31 марта 2020

Каждый раз, когда я запускаю функцию, она просто запускается, пока не выйдет из строя, заявив, что ошибка неизвестна Я чувствую, что это может быть связано с версией зависимости хранилища данных в моем пакете. json file

package. json

{
  "name": "sample-http",
  "version": "0.0.1",
  "dependencies": {
    "@google-cloud/datastore": "5.1.0"
  }
} 

index. js

/**
 * Responds to any HTTP request.
 *
 * @param {!express:Request} req HTTP request context.
 * @param {!express:Response} res HTTP response context.
 */

// Requested from front end
var date = "2002-09-13";
var limit = "10";

exports.checkRecords = async (req, res) => {
  // Search for date in Datastore
    const {Datastore} = require('@google-cloud/datastore');
    const datastore = new Datastore({
        projectId: '...',
        keyFilename: '...'
    });

    const taskKey = datastore.key('headline');
    const [entity] = await datastore.get(taskKey);

    if(entity != null){
      res.status(200).send("contains");
    }
    else{
      res.status(200).send("null");
    }
};

Я прибегнул к простой проверке, является ли сущность нулевой, потому что, кажется, больше ничего не работает

Ответы [ 2 ]

1 голос
/ 31 марта 2020

Можете ли вы попробовать:

var date = "2002-09-13";
var limit = "10";

exports.checkRecords = async (req, res) => {
  // Search for date in Datastore
    const {Datastore} = require('@google-cloud/datastore');
    const datastore = new Datastore({
        projectId: '...',
        keyFilename: '...'
    });

    // The kind of the entity
    const kind = 'Task';

    // The name/ID of the entity
    const name = 'sampletask1';

    // The Cloud Datastore key for the new entity
    const taskKey = datastore.key([kind, name]);
    const [entity] = await datastore.get(taskKey);

    if(entity != null){
      res.status(200).send("contains");
    }
    else{
      res.status(200).send("null");
    }
};

1 голос
/ 31 марта 2020

Я думаю, что вам не хватает вида в get

Я создал Dog Вид и добавил Freddie к нему и могу:

var date = "2002-09-13";
var limit = "10";

exports.checkRecords = async (req, res) => {
    const { Datastore } = require("@google-cloud/datastore");
    const datastore = new Datastore();
    const taskKey = datastore.key(["Dog", "Freddie"]);
    const [entity] = await datastore.get(taskKey);

    if (entity != null) {
        res.status(200).send("contains");
    }
    else {
        res.status(200).send("null");
    }
};

NB Если ваше хранилище данных находится в том же проекте, вы можете использовать учетные данные приложения по умолчанию для упрощения аутентификации, т.е. const datastore = new Datastore();

...