При публикации запроса я хочу получить только те данные, которые назначены текущему пользователю (id).
Я получаю и устанавливаю userId
с функцией промежуточного программного обеспечения, которая содержит;
const userId = tokenPayload['claims']['uid'];
ctx.userId = userId;
На основе userId
мне нужно отфильтровать данные от таких моделей, как эта;
model Address {
id String @id @default(uuid())
name string
...
user User
}
, поэтому я хочу вернуть эквивалент Addresses.filter(address => address.user.id === ctx.userId)
(Addresses
, где user.id
равно значению, установленному в промежуточном программном обеспечении)
например, что-то вроде этого (это вымышленный код, поэтому он работает)
plugins: [nexusPrismaPlugin(
{
computedInputs: {
...
},
computedFilters: {
addresses: ({ ctx }) => ({ where: { user: { id: ctx.userId } } }),
relations: ({ ctx }) => ({ where: { user: { id: ctx.userId } } }),
...
}
}
)],
Где computedFilters
фильтрует входящий запрос в соответствии с требованиями, установленными в операторе where
, Таким образом, с этим набором он должен возвращать только adresses
и / или relations
, где user.id === ctx.userId
.
Я надеюсь, что ясно, чего я хочу достичь, это не обязательно должно быть так, единственное, что должно быть таким же, - это ответ наиболее эффективным способом.
Я надеюсь, что кто-то может помочь, я борюсь с текущей проблемой в течение последних нескольких недель.