javascript - 谷歌数据存储查询中的多项选择抛出 ApiError : Precondition Failed error in node

标签 javascript node.js google-app-engine google-cloud-datastore gcloud-node

我正在使用以下查询从 Google 数据存储区检索一些实体:

var query  = datastore.createQuery(namespace,tableName);
query.select(['displayName','username']);
datastore.getEntitySet(query,function(err,data){
	if(err){
		  res.status(500).end();
	  }
	  else{
		  res.send(data);
	  }
	});

如果我只选择一个属性,上面的代码工作正常,即

query.select('username');

但是使用多重选择会抛出 412“前提条件失败”错误。我的实体如下所示: Entity properties

最佳答案

您需要创建多属性索引才能使用多属性查询。

由于您没有使用 App Engine,因此需要手动创建这些索引。

我有一个教程here这涵盖了这一点。

步骤如下:

  1. 安装 Java 7 运行时(或更高版本)http://java.com/
    • 我建议使用Cloud Shell已经安装并配置了 Java
  2. 创建一个名为 WEB-INF 的文件夹
  3. 在该文件夹中,您需要三个文件:
  4. 在 datastore-indexes.xml 文件中,您需要定义多属性索引。 Follow the documentation .
  5. 安装gcd tool
  6. 最后运行gcd工具(WEB-INF文件夹上一级目录)
    • Linux/Mac path/to/gcd.sh updateindexes --auth_mode=oauth2 。
    • Windows path/to/gcd.cmd updateindexes --auth_mode=oauth2 。

几分钟后,您的索引就会创建完毕。

关于javascript - 谷歌数据存储查询中的多项选择抛出 ApiError : Precondition Failed error in node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34928582/

相关文章:

javascript - 从多个调用发出单个 HTTP 请求

javascript - 移相器 : how to load assets after preload?

javascript - 如何在 JavaScript 中动态创建事件和事件处理程序

javascript - TypeError : db. admin 不是一个函数

python - 在 app.yaml 文件中访问环境变量

eclipse - 无法将 Google Cloud 应用程序代码编译为 java 1.7 - 版本始终为 1.8

python - webapp2 请求参数/处理程序参数的自动转换?

javascript - webpack 开发服务器仅重新加载一次

javascript - 点击角色为='button'的div元素无效

javascript - 从文件 Protractor 读取数据