Php 捕获的异常:关键路径元素名称__xyz_quot;无效
使用PHP-GDS库,当密钥的格式为“\uuuxyz\uuuuz”时,我在尝试“upert”实体时收到一个异常 有没有办法解决这个问题,因为密钥是一个我可能无法控制的用户名,_uxyz_uuu是一个完全有效的用户名。以下是代码和异常消息:Php 捕获的异常:关键路径元素名称__xyz_quot;无效,php,google-app-engine,Php,Google App Engine,使用PHP-GDS库,当密钥的格式为“\uuuxyz\uuuuz”时,我在尝试“upert”实体时收到一个异常 有没有办法解决这个问题,因为密钥是一个我可能无法控制的用户名,_uxyz_uuu是一个完全有效的用户名。以下是代码和异常消息: $username = "__xyz__"; $obj_user = new Entity(); $obj_user->setKeyName($username); try { $result = $obj_user_store->ups
$username = "__xyz__";
$obj_user = new Entity();
$obj_user->setKeyName($username);
try {
$result = $obj_user_store->upsert($obj_user);
}catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
return false;
}
例外情况:
Caught exception: The key path element name "__xyz__" is reserved.
不幸的是,没有,你必须编码的用户名是某种方式。或者,我建议使用自动生成的键,并将用户提供的数据存储在值中,而不是键中 对于这种情况,文档是非常糟糕的,在被取代的数据存储Python API的文档中,只有一条提到了这一点:“键名不能以两个下划线开头和结尾
。”。
Java文档并没有对此置之不理。也不是现代的Python API。我找不到任何关于数据存储的PHP文档
但对于所有API都是一样的,因为异常发生在db端,所以使用哪种语言无关紧要(下面都是protobufs)
我只知道双下划线的一种用法:当您构建查询并希望按键升序/降序排序时。您可以通过按名为的不存在的保留键进行排序来完成此操作