【问题标题】:Querys in graphqlgraphql 中的查询
【发布时间】:2019-09-19 14:47:45
【问题描述】:

我正在尝试使用 graphql 进行查询,以获取通过 id 查找的一个用户的朋友列表。

我的 Mongodb 是多个集合:

{
  "_id": ObjectId("5c09af1ebaa7a16d74d52494"),
  "name": "zaraza",
  "surname": "zaraza",
  "email": "zaraza@gamil.com",
  "state": "Disponible",
  "__v": 0,
  "avatar": "https://cdn.iconscout.com/icon/free/png-256/avatar-380-456332.png",
  "ip": "",
  "friends": [
    {
      "_id": "5c09af05baa7a16d74d52493"
    },
    {
      "_id": "5c09af32baa7a16d74d52495"
    },
    {
      "_id": "5c09af45baa7a16d74d52496"
    },
    {
      "_id": "5c09afda583b656e6d350dd5"
    }
  ]
}

我的 graphql 查询是:

query {
  singleUser(
    _id: "5c09afda583b656e6d350dd5"
  ){
    _id
    name
    surname
    email
    state
    avatar
    friends{
      _id
    }
    }
}

但我不知道如何查询“朋友”数组的 _id 以使用每个 _id 朋友的姓名完成我的结果

使用我得到的最后一个代码:

{
  "data": {
    "singleUser": {
      "_id": "5c09afda583b656e6d350dd5",
      "name": "zaraza",
      "surname": "zaraza",
      "email": "zaraza@gamil.com",
      "state": "Disponible",
      "avatar": "https://cdn.iconscout.com/icon/free/png-256/avatar-373-456325.png",
      "friends": [
        {
          "_id": "5c09af32baa7a16d74d52495"
        },
        {
          "_id": "5c09af45baa7a16d74d52496"
        },
        {
          "_id": "5c09afda583b656e6d350dd5"
        }
      ]
    }
  }
}

但我想得到:

{
  "data": {
    "singleUser": {
      "_id": "5c09afda583b656e6d350dd5",
      "name": "zaraza",
      "surname": "zaraza",
      "email": "zaraza@gamil.com",
      "state": "Disponible",
      "avatar": "https://cdn.iconscout.com/icon/free/png-256/avatar-373-456325.png",
      "friends": [
        {
          "_id": "5c09af32baa7a16d74d52495"
          **"name": "zaraza2"**
        },
        {
          "_id": "5c09af45baa7a16d74d52496"
          **"name": "zaraza3"**
        },
        {
          "_id": "5c09afda583b656e6d350dd5"
          **"name": "zaraza4"**
        }
      ]
    }
  }
}

字段名在同一个集合中获取

【问题讨论】:

    标签: mongodb graphql


    【解决方案1】:

    在您的resolver 中,您可以定义函数来解析特定字段。

    我们将在User Type 上定义一个函数来解析friends 字段。

    const resolver = {
      // This is the type
      User: {
        // when we query friends field on the User type, run this function
        // first argument is the parent doc which we will use to 
        // extract the friends ids
        friends: parent => User.find({ _id: { $in: parent.friends } }, { name: 1 }) 
      }
    };
    

    【讨论】:

      猜你喜欢
      • 2021-05-21
      • 1970-01-01
      • 2020-11-12
      • 2019-05-17
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2020-10-13
      相关资源
      最近更新 更多