1

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

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' 错误。我的实体如下所示: 实体属性

4

1 回答 1

1

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

因为您没有使用 App Engine,所以需要手动创建这些索引。

我在这里有一个教程,涵盖了这一点。

以下是步骤:

  1. 安装 Java 7 Runtime(或更高版本)http://java.com/
  2. 创建一个名为 WEB-INF 的文件夹
  3. 在该文件夹中,您需要三个文件:
  4. 在 datastore-indexes.xml 文件中,您需要定义多属性索引。按照文档
  5. 安装gcd 工具
  6. 最后,运行 gcd 工具(WEB-INF 文件夹上方的一个目录)
    • Linux/Macpath/to/gcd.sh updateindexes --auth_mode=oauth2 .
    • 视窗path/to/gcd.cmd updateindexes --auth_mode=oauth2 .

几分钟后,应创建索引。

于 2016-01-23T19:09:42.340 回答