首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Convector查询JSON对象的CouchDB Rich查询?

如何使用Convector查询JSON对象的CouchDB Rich查询?
EN

Stack Overflow用户
提问于 2019-09-08 07:22:02
回答 1查看 120关注 0票数 0

我在这里遇到了一个富查询和对流链代码的问题,一切都适用于芒果查询,但当我传递content对象时,它是stringifyed,不会被发送有一个对象,但被转换为字符串"content":"{\"data\":\"1971\"}",显然它无法通过查询

原始示例查询

代码语言:javascript
复制
{
  "selector": {
    "type": "io.worldsibu.examples.person",
    "attributes": {
      "$elemMatch": {
        "id": "born-year",
        "content": {
          "data": "1971"
        }
      }
    }
  }
}

graphql查询变量

代码语言:javascript
复制
{
    "getByAttributeInput": {
    "id": "born-year",
    "content": {
      "data": "1971"
    }
    },
    "skip": 0,
    "take": 10
}

packages/person-cc/src/person.controller.ts

链码控制器方法

代码语言:javascript
复制
@Invokable()
  public async getByAttribute(
    @Param(yup.string())
    id: string,
    @Param(yup.mixed())
    value: any
  ) {
    return await Person.query(Person, {
      selector: {
        type: c.CONVECTOR_MODEL_PATH_PERSON,
        attributes: {
          $elemMatch: {
            id: id,
            content: value
          }
        }
      }
    });
  }

在docker日志中,我们可以看到值是发送的内容是一个字符串,而不是"content":"{\"data\":\"1971\"}"以外的对象

代码语言:javascript
复制
{"selector":{"type":"io.worldsibu.examples.person","attributes":{"$elemMatch":{"id":"born-year","content":"{\"data\":\"1971\"}"}}}}
EN

回答 1

Stack Overflow用户

发布于 2019-09-08 07:23:57

诀窍是将@Param(yup.mixed())更改为@Param(yup.object()),现在它可以像预期的那样工作,我们可以用任意和复杂的对象查询属性内容值

代码语言:javascript
复制
@Invokable()
public async getByAttribute(
  @Param(yup.string())
  id: string,
  // @Param(yup.mixed())
  @Param(yup.object())    
  value: any
) {
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57838092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档