Итак, я не знаю, как справиться с этим в сервисе graphql.
Я переношу сервис из rest - express api в apollo api.
Моя текущая схема Монго выглядит следующим образом:
const PostSchema = new mongoose.Schema({
title: { type: String, required: true },
body: { type: String },
uid: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
privacy: { type: String, enum: ['everyone','followers','onlyme'], default: 'everyone' },
});
const UserSchema = new mongoose.Schema({
name: { type: String, required: true },
followers: [{ type: mongoose.Schema.Types.ObjectId, ref: 'User' }],
});
в экспресс-среде я использовал, чтобы получать сообщения с заполненным пользователем, затем применял функцию контроля конфиденциальности на основе подписчиков пользователя.
, но в apollo я не могу получить доступ к сообщению после его заполнения.где я могу применить директиву или что-то еще после того, как поля сообщений будут разрешены?
схема graphql:
type User {
_id: ID!
name: String
followers: [ID]
}
type Post {
_id: ID!
title: String!
body:String
uid :User @privacy
}
extend type Query{
post(_id: String):Post
posts:[Post]
}
преобразователь сообщений:
{
Query: {
post: (p, a, ctx, info) => {
return ctx.modules.post.getPost(a._id)
}
},
Post: {
uid: (p, a, ctx, info) => {
return ctx.modules.user.getUser(p.uid);
}
},
}