在Google数据存储区查询中多次选择抛出ApiError:Precondition节点中的失败错误

时间:2016-01-21 16:05:51

标签: 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' Precondition Failed'错误。我的实体如下所示: Entity properties

1 个答案:

答案 0 :(得分:1)

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

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

我有一个涵盖此内容的教程here

以下是步骤:

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