簡體   English   中英

如何在 Node.js 中正確進行數據存儲查詢?

[英]How to correctly make a datastore query in Node.js?

試圖從我的谷歌雲數據存儲中獲取實體,按鍵名過濾。 不確定我在代碼中做錯了什么。

我創建了我的數據存儲

const ds = new Datastore({
  projectId: "my-project",
  keyFilename: "./servicekey.json",
  namespace: "client-dummy",
});

然后創建一個key進行過濾

  const _key = ds.key({
    namespace: "client-dummy",
    path: ["transactions", data.id],
  });

通過提供基於命名空間、種類和鍵的過濾器來創建我的查詢。

const query = ds
    .createQuery("client-dummy", "transactions")
    .filter("__key__", _key);

最后運行查詢

const result = await ds.runQuery(query);

但結果總是空的

[ [], { moreResults: 'NO_MORE_RESULTS', endCursor: 'CgA=' } ]

我嘗試在 UI 上運行相同的查詢並獲得結果。 我不知道代碼有什么問題。 有人可以幫忙嗎?

我在我這邊復制了相同的代碼,並且遇到了同樣的問題。 為了能夠復制,我將data.idconst data = {id: 1} ,然后創建了一個實體來匹配用例並且確實具有相同的行為。

在玩了一會兒之后,我注意到在“編輯實體”的 UI(GCP 中的數據存儲)中, Key 文字Key(transactions, '1')這意味着這個 '1' 是一個字符串。

只是添加 toString() 方法有幫助。 所以密鑰創建看起來像這樣:

const _key = ds.key({
    namespace: "client-dummy",
    path: ["transactions", data.id.toString()]
  });

暫無
暫無

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

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