簡體   English   中英

無法使用節點從數據存儲中檢索數據

[英]Not able to retrieve data from datastore using node

我有一個使用節點構建的簡單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);

我注意到這兩個功能在兩個功能之間是不同的。 在第一個中,您可以在函數調用之間重用查詢對象。 查詢對象不應重用。

我注意到的第二件事是,您不使用傳遞到app.get()函數參數中的res。

修改后的工作代碼-

    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
      }
    );
  })
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM