如何通过在 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 数组作为输入来检索实体?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 GCM 注册 ID 唯一地存储到 MySQL 中

如何通过参数将大于 200 个字符的字符串传递给存储过程

我如何将变量传递给Google Cloud函数

当前行和上一行之间的秒数差异,并在订单 ID 也使用 google bigquery 匹配时将值存储在单独的列中

为啥在通过 Firebase 身份验证传递 id 令牌时,此 CORS 身份验证的 Google Cloud 函数会返回 403?

如何使用服务帐户密钥通过 ADF 连接到 Google 云存储