在PHP和Google数据存储区本地开发的最佳方式是什么?
dev_appserver.py docs表示我可以查看本地数据存储区实体,但没有关于如何使用PHP连接/写入此本地数据存储区的文档。
我可以使用以下方式写入本地数据存储 模拟器 :
function takeOrder(toppingType, crustType) {
console.log('Order: ' + crustType + ' pizza topped with ' + toppingType);
orderCount = orderCount + 1;
topping = toppingType;//store the passed value here
crust = crustType;//store the passed value here
}
但是这些实体没有显示在http://localhost:8000/datastore的dev_appserver.py的本地管理服务器中。
即使将dev_appserver的// Start emulator: gcloud beta emulators datastore start --data-dir=_datastore
// Pointing this to dev_appserver's 'API server' doesn't work.
putenv('DATASTORE_EMULATOR_HOST=http://localhost:8081');
$datastore = $cloud->datastore();
设置为等于模拟器的--datastore_path
也无效。
为什么数据存储模拟器和dev_appserver.py的数据存储区不同?它们共享相同的名称,文档可互换地引用它们。这令人沮丧。
这是进行本地数据存储开发的正确方法吗?有没有办法写入本地数据存储区并让实体显示在管理服务器查看器中?
答案 0 :(得分:1)
Google Cloud Datastore Emulator和dev_appserver.py具有不同的底层存储空间。 因此,数据存储模拟器上的实体无法在管理服务器查看器中显示。
请参阅:
https://github.com/GoogleCloudPlatform/google-cloud-datastore/issues/21
Connecting to AppEngine datastore in development via Cloud Datastore API
有两种方法可以连接到本地数据流(我没有尝试使用php):
使用appengine-php-sdk for standard enviroment,通过dev_appserver.py启动开发服务器,并从admin server viewer查看数据存储。
使用google/cloud library for php,并设置DATASTORE_EMULATOR_HOST
env变量。
不幸的是没有模拟器的查看器,所以我正在开发cli工具来通过GQL检查数据存储区实体:https://github.com/nshmura/dsio
答案 1 :(得分:0)
您是否尝试将环境变量传递给包含库的之前的php可执行文件?
也许试试这个:
#/bin/sh
export DATASTORE_EMULATOR_HOST=http://localhost:8081
dev_appserver.py ...