首页 > 解决方案 > 如何通过在 Google 数据存储中传递 ID 数组作为输入来检索实体?

问题描述

我正在尝试在数据存储中实现以下 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;
 }

这是该函数的幼稚逻辑,我试图将其简化为单个查询。

标签: javascriptnode.jsnosqlgoogle-cloud-datastoredatastore

解决方案


可以通过使用文档中提到的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;
}

推荐阅读