[英]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.id
為const 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.