GraphQL关系数据与MongoDB文档参考

时间:2019-04-29 19:35:25

标签: javascript database mongodb graphql

我是GraphQL的新手,正在尝试学习在MongoDB中使用它的最佳方法。 GraphQL具有定义类型之间关系的方法,如下所示:

type Booking {
        id: ID!
        date: String!
        author: [User!]!
        event: [Event!]!
    }

但是,MongoDB还可以通过以下方式定义文档之间的引用:

    event: {
      type: Schema.Types.ObjectId,
      ref: 'Event'
    },
    author: {
      type: Schema.Types.ObjectId,
      ref: 'User'
}

如果我想检索预订的作者,则可以在解析器中的GraphQL端执行搜索,如下所示:

Booking: {
        author(parent, args, ctx, info) {
            return users.filter(user => {
                return user.id === parent.author;
            })
        }
    },

或者我可以对结果使用MongoDB find()方法,从解析器中的Booking.find()查找作者,如下所示:

bookings: async () => {
    try {
      const bookings = await Booking.find();
      return bookings.map(booking => {
        return //perform MongoDB find() here to get the authors using the references
      });
    } catch (err) {
      throw err;
}  

我的问题是,是否有必要在GraphQL端和MongoDB端定义数据之间的关系?上面提到的两种方法中哪一种是检索关系数据的更好方法?

0 个答案:

没有答案