В своем проекте я использую модули account-js и graphql. Как применить данные пользователя, вошедшего в учетные записи-js в соответствии с моим провайдером и распознавателем?
Именно то, что я хочу сделать, - это получить учетные данные вошедшего в систему пользователя из службы, предоставляемойсчета-JS. т.е. доступ к другой информации, такой как идентификатор, профиль. Мне нужно иметь такой контекст, как context.user.id. Я не смог получить его.
users.providers.ts
import { Injectable } from "@graphql-modules/di";
import { Db, Collection, ObjectID } from "mongodb";
import { UserDbObject, CreateUserInput } from '@models';
import { AccountsServer, ServerHooks } from '@accounts/server';
@Injectable()
export class UsersProvider {
collection: Collection<UserDbObject>;
constructor(db: Db) {
this.collection = db.collection('users');
}
getAllUsers() {
return this.collection.find().toArray();
}
getUserById(id: string) {
return this.collection.findOne({ _id: new ObjectID(id) });
}
getUserByToken(id: string) {
return this.collection.findOne({ _id: new ObjectID(id) });
}
getUserByUsername(username: string) {
return this.collection.findOne({ username: username });
}
getUsersCount() {
return this.collection.countDocuments();
}
async updateUser(id: string, user: CreateUserInput): Promise<UserDbObject> {
const _id = new ObjectID(id);
await this.collection.updateOne({ _id }, { $set: user });
return {
_id,
...user
} as UserDbObject;
}
async deleteUser(id: string, user: CreateUserInput): Promise<UserDbObject> {
const _id = new ObjectID(id);
await this.collection.deleteOne({ _id });
return {
_id,
...user
} as UserDbObject;
}
}
query.resolvers.ts
import { QueryResolvers } from "@models";
import { UsersProvider } from "../providers/users.provider";
export const Query: QueryResolvers = {
allUsers: (root, args, { injector }) => injector.get(UsersProvider).getAllUsers(),
userById: (_, { id }, { injector }) => injector.get(UsersProvider).getUserById(id),
userByUsername: (_, { username }, { injector }) => injector.get(UsersProvider).getUserByUsername(username),
getUserByToken: (_, { id }, { injector }) => injector.get(UsersProvider).getUserByToken(id)
}