Не удалось получить данные из хранилища данных с помощью узла - PullRequest
0 голосов
/ 22 января 2019

У меня есть простой запрос на получение, построенный с использованием узла express для извлечения данных из хранилища данных.Я не могу вернуть результаты.Асинхронный вызов запроса 'get' застрял.Не уверен, что происходит.

const express = require('express');
const {Datastore} = require('@google-cloud/datastore');

const app = express();

// Your Google Cloud Platform project ID
const projectId = 'xxx';

// Creates a client
const datastore = new Datastore({
  projectId: projectId,
  keyFilename: '/Masters-LUC/spring-2019/internship/service-keys/xxx.json'
});

const query = datastore
  .createQuery('approvals')
  .filter('status', '=', 'yes');

app.get("/api/get", (req, res, next) => {
  query.run().then(([documents]) => {
    documents.forEach(doc => console.log(doc));
  });

});

module.exports = app;

Я переписал то же самое, используя асинхронную функцию.Ниже работает.Почему не выше?

// Retrieve data from datastore
async function quickStart() {
  // Your Google Cloud Platform project ID
  const projectId = 'xxx';

  // Creates a client
  const datastore = new Datastore({
    projectId: projectId,
    keyFilename: '/Masters-LUC/spring-2019/internship/service- 
keys/xxx.json'
  });

  const query = datastore
  .createQuery('approvals')
  .filter('status', '=', 'yes');

  const [approvals] = await datastore.runQuery(query);
  console.log('Tasks:');
  approvals.forEach(task => console.log(task));
}
quickStart().catch(console.error);

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Модифицированный рабочий код -

    app.get("/api/approvals/", (req, res, next) => {
    const query = datastore
    .createQuery('approvals');

    query.run().then((approvals) => {
    approvals.forEach(appr => console.log(appr)); // This is used to log results on console for verification

    // loading results on the response object to be used later by client
    res.status(200).json(
      {
        message: "Request was processed successfully!",
        approvals : approvals
      }
    );
  })
})
0 голосов
/ 25 января 2019

Две вещи, которые я заметил, отличаются между вашими двумя функциями. В первом случае вы повторно используете объект запроса в вызовах функций. Объекты запросов не должны использоваться повторно.

Второе, что я заметил, это то, что вы не используете res, переданный в ваш параметр функции в app.get ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...