node.js - 带有 AppEngine NodeJS Standard 的过滤器的 Cloud Datastore Projection 查询
问题描述
我正在学习 GCP,并搜索了文档。投影查询文档指出它们可以与过滤器一起使用,尽管有一些限制。据我了解,我没有落入限制范围内,但我仍然无法使其发挥作用。
我想做的是一个简单的
SELECT property FROM kind WHERE enabled = TRUE
属性被标记为索引,我还部署了一个 index.yaml。我的代码如下
const selectQuery = programTypeQuery
.select(entityNameProperty)
.filter('enabled',true);
评论选择行时,查询有效。在评论过滤器行时,它也可以工作,但是在运行两者时,我在邮递员中收到以下消息。
{
"code": 9,
"metadata": {
"_internal_repr": {}
},
"note": "Exception occurred in retry method that was not classified as transient"
}
我的日志只显示 400 状态错误。
任何帮助将不胜感激
编辑:
这是完整的代码。我有一个参数,指示名称的语言。在数据库中,我有 nameEn 和 nameEs 作为属性,所以我只想返回所选语言的名称。enabled 是一个布尔属性,指示产品是否处于活动状态。
const Datastore = require('@google-cloud/datastore');
const datastore = Datastore();
const programTypeQuery = datastore.createQuery('programType')
entityNameProperty = 'name' + req.params.languageCode
const selectQuery = programTypeQuery
.select(entityNameProperty)
.filter('enabled',true);
selectQuery.runQuery()
.then((results) => {
res.json(results);
})
.catch(err => res.status(400).json(err));
解决方案
根据您提供的详细信息,很难检测到此问题的根源。您可以使用Google APIs Explorer for Datastore API 并尝试您的查询。我根据你的描述准备了请求体,你可以点击这里通过更改projectId来执行它。通过这样做,您将收到成功的响应或带有详细信息的错误消息,从这里检测根本原因可能会更容易。
推荐阅读
- javascript - 将具有 Javascript 数组值的输入文本字段分配给 javascript 数组变量
- node.js - 查询多个集合Nodejs
- c++ - 使用 mpz 时在 tcache 2 中检测到双释放是什么意思?
- python - 使用多个循环对字典中的值进行排列
- zendesk-api - 如何检索特定月份的门票?
- php - 致命错误:未捕获的错误:使用 SQLite 调用成员函数 fetch()
- polymer-2.x - 如何在 WCT 上定义“过滤器”?
- android - 更新到 Kotlin 1.3.50 后 kapt 构建错误
- java - 如何在 JUnit 中验证静态方法的参数?
- java - 使用“azure-iot-sdk-java”;DeviceClient 实例的预期生命周期是多少