如何通过在 Google 数据存储中传递 ID 数组作为输入来检索实体?
Posted
技术标签:
【中文标题】如何通过在 Google 数据存储中传递 ID 数组作为输入来检索实体?【英文标题】:How to retrieve entities by passing array of IDs as input in Google datastore? 【发布时间】:2021-04-25 02:31:13 【问题描述】:我正在尝试在数据存储区中实现以下 SQL 逻辑,
SELECT * from table where id in [1,2,3,4,5]
在数据存储区中实现这一点,我想以数组的形式检索所有具有这些 ID 的对应实体。
let employees = []
try
for (let id of idArray)
const employee = await employeeRepo.getOneById(workspace, id)
employees.push(employee)
catch (e)
throw e;
这是函数的幼稚逻辑,我试图将其简化为单个查询。
【问题讨论】:
【参考方案1】:您是否使用此处引用的 Node.js 库:https://cloud.google.com/datastore/docs/reference/libraries
有一个函数get
可以传入一个键数组,它会返回实体数组。
https://googleapis.dev/nodejs/datastore/latest/Datastore.html#get
【讨论】:
【参考方案2】:如documentation 中所述,可以使用get 来完成
以下是如何根据您的代码执行此操作的示例:
const employee1 = this.datastore.key(['Employee', 1]);
const employee2 = this.datastore.key(['Employee', 2]);
const employee3 = this.datastore.key(['Employee', 3]);
const keys = [employee1, employee2, employee3];
try
const [employees] = await datastore.get(keys);
catch (e)
throw e;
【讨论】:
以上是关于如何通过在 Google 数据存储中传递 ID 数组作为输入来检索实体?的主要内容,如果未能解决你的问题,请参考以下文章
当前行和上一行之间的秒数差异,并在订单 ID 也使用 google bigquery 匹配时将值存储在单独的列中
为啥在通过 Firebase 身份验证传递 id 令牌时,此 CORS 身份验证的 Google Cloud 函数会返回 403?