google-api-nodejs-client を使用して、Google Cloud データストアに対して簡単なクエリを実行しようとしています。特定の種類に一致するすべてのエンティティを照会したい。「今すぐ試す」ツールを使用してこのクエリを実行すると、正常に動作します。
Request
POST https://www.googleapis.com/datastore/v1beta2/datasets/healthier-staging/runQuery?key={YOUR_API_KEY}
{
"query": {
"kinds": [
{
"name": "Subscriber"
}
]
}
}
Response
200 OK
{
"batch": {
"entityResultType": "FULL",
"entityResults": [
{
"entity": {
"key": {
"partitionId": {
"datasetId": "s~healthier-staging"
},
"path": [
{
"kind": "Subscriber",
"name": "+1215XXXXXXX"
}
]
},
"properties": {
...
資格情報を使用して認証したり、トランザクションを作成したりできるので、認証の問題ではないことがわかります。
Nodeで実行しようとしているコードは次のとおりです。
this.datastore.runQuery({
datasetId: 'healthier-staging',
query: {
kinds: [{name: 'Subscriber'}]
},
}, (function(err, result) {
if (err) {
console.error(err);
return;
}
}).bind(this));
Node モジュールを使用して同じクエリを実行しようとすると、次のエラーが発生します。
{ [Error: one of fields Query.query and Query.gql_query must be set]
code: 400,
errors:
[ { domain: 'global',
reason: 'INVALID_ARGUMENT',
message: 'one of fields Query.query and Query.gql_query must be set' } ] }
query
フィールドを指定したので、これは意味がありません。私はあらゆる種類のことを試しました: 削除datasetId
(needing に関するエラーが生成されますdatasetId
)、代わりに使用gql_query
(同じエラー)、 をトランザクション内にカプセル化し、datasetId
それを 内に渡しますreadOptions
。
これはバグですか、それともばかげたことをしていますか?
ありがとう!