插入Google Cloud DataStore后缺少实体

时间:2017-07-08 16:15:05

标签: google-cloud-datastore app-engine-flexible

在Google Cloud DataStore中插入29447种单一实体后,我等待大约30秒,然后查看该特定类型的实体数量。令人惊讶的是,我注意到其中一些丢失(getCurrentKeys返回少于29447个实体)。当我在较长时间(约1小时)后检查时,我可以看到所有实体都在那里(getCurrentKeys返回预期的29447个实体)。

用于读取实体数量的代码如下:

const runQuery = (query) => {
  return new Promise((resolve, reject) => {
    datastore.runQuery(query)
      .then(results => {
        const entities = results[0];
        resolve(entities);
      })
      .catch(e => reject(e));
  });
};

const getCurrentKeys = () => {
  const query = datastore.createQuery(KIND)
    .select('__key__');
  return runQuery(query);
};

async function main() {
  const currentKeys = await getCurrentKeys();
  console.log(`currentKeys: ${currentKeys.length}`);
}

main();

关于可能发生的事情的任何想法?

提前致谢

2 个答案:

答案 0 :(得分:1)

非祖先查询最终是一致的。在所有行显示之前需要一段时间。

本文应该解释更多:

https://cloud.google.com/datastore/docs/articles/balancing-strong-and-eventual-consistency-with-google-cloud-datastore/

答案 1 :(得分:0)

经过一番研究后,我认为它可能与索引有关。我相信在运行查询时,索引的更新速度不够快。实体具有许多属性,因此涉及许多索引。