【问题标题】:Google Cloud Datastore query values in array数组中的 Google Cloud Datastore 查询值
【发布时间】:2018-12-29 19:48:32
【问题描述】:

我的实体看起来像这样:

{
  name: "Max",
  nicknames: [
   "bestuser"
 ]
}

如何查询昵称以获取名称?

我已经创建了以下索引,

indexes:

- kind: users
  properties:
  - name: name
  - name: nicknames

我使用node.js客户端库查询昵称,

db.createQuery('default','users').filter('nicknames', '=', 'bestuser')

响应只是一个空数组。

有没有办法做到这一点?

【问题讨论】:

  • @Aron 找到解决方案了吗?
  • @ofundefined 是的,我们在本机模式下使用 firestore。 Firestore 支持包含数组查询

标签: google-cloud-platform google-cloud-datastore


【解决方案1】:

您需要实际从数据存储中获取查询,而不仅仅是创建查询。我对nodejs库不熟悉,但这是谷歌云网站上给出的代码:

datastore.runQuery(query).then(results => {
  // Task entities found.
  const tasks = results[0];

  console.log('Tasks:');
  tasks.forEach(task => console.log(task));
});

查询在哪里

const query = db.createQuery('default','users').filter('nicknames', '=', 'bestuser')

查看https://cloud.google.com/datastore/docs/concepts/queries#datastore-datastore-run-query-nodejs的文档

【讨论】:

    【解决方案2】:

    首先要注意的是,您不需要为这种搜索创建索引。没有不平等,没有秩序,没有投影,所以没有必要。

    正如 Reuben 所说,您已经创建了查询,但没有运行它。

    ds.runQuery(query, (err, entities, info) => {
                    if (err) {
                        reject(err);
                    } else {
                        response.resultStatus = info.moreResults;
                        response.cursor = info.moreResults == TNoMoreResults? null: info.endCursor;
                        resolve(entities);
                    };
                });
    

    在我的例子中,response 结构用于收集有关游标的信息(如果数据多于我查询的数据,因为我使用 limit 限制了查询大小)但您不需要除了resolve(entities)

    【讨论】:

      【解决方案3】:

      如果您使用的是默认命名空间,则需要将其从查询中删除。您的查询需要是这样的:

      const query = db.createQuery('users').filter('nicknames', '=', 'bestuser')
      

      【讨论】:

      • 这对过滤数组属性有用吗?
      【解决方案4】:

      我将整个 plob 作为字符串读取,以获取二进制文件 here 的字节。我想你只是根据你的要求解析 Json

      【讨论】:

        猜你喜欢
        • 2019-03-22
        • 2018-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-21
        • 2017-01-16
        • 2017-03-07
        相关资源
        最近更新 更多