>  Q&A  >  본문

KeystoneJS 외래 키 필드에 로그인한 사용자의 ID를 자동으로 추가합니다.

KeystoneJS 프레임워크에서 제공하는 문서를 사용하여 애플리케이션을 만들고 있습니다. 내 앱에는 두 개의 테이블이 있습니다. 하나는 Users이고 다른 하나는 Posts입니다. 그래서 관리자 영역에 로그인하여 게시물을 생성하면 외래 키 열이 있는 필드가 있는데 해당 필드는 사용자 테이블의 외래 키 값으로 채워지기 위해 비어 있습니다. 그래서 KeystoneJS에 로그인한 사용자 ID를 사용하여 새 게시물을 작성할 때 시스템이 자동으로 author에 외래 키 값을 추가하도록 하고 싶습니다.

그래서 해결책을 찾기 위해 여기저기 찾아봤지만 딱 맞는 해결책을 찾을 수 없었습니다.

혹시 이에 대해 좋은 생각이 있으신 분이 계시다면, 이 질문에 답변해 주시면 정말 감사하겠습니다.

감사합니다

P粉239164234P粉239164234401일 전633

모든 응답(1)나는 대답할 것이다

  • P粉949190972

    P粉9491909722023-09-15 10:10:38

    통제 블로그 예제를 보셨나요?

    프로젝트와 유사한 목록이 있습니다: PostsUsers,可以是ContributorsModerators。在你的情况下,贡献者/管理员的区别并不重要,你会对Post列表上的钩子感兴趣,特别是resolveInput.createHooks, 다음과 같습니다:

    으아아아

    Documentation에 따르면:

    따라서 이는 저장하기 전에 Post.author 필드와 같은 값을 채우거나 강제 적용하는 등 값을 변경할 수 있는 기회입니다.

    resolveInput 다음을 포함하는 context 객체 resolveInput获取context对象,其中包括对session对象的引用。该对象的内容由你的会话存储函数决定,但通常包含有关当前用户的信息。在这个示例中,如果登录的用户是贡献者,我们从context.session?.contributor?.id获取他们的贡献者ID,并将其保存到createdBy字段。同时,createdAt를 가져옵니다. session 개체에 대한 참조입니다. 이 객체의 콘텐츠는 세션 저장소 기능

    에 의해 결정되지만 일반적으로 다음에 대한 정보를 포함합니다. 현재 사용자 정보. 이 예에서는 로그인한 사용자가 기여자인 경우 context.session?.contributor?.id에서 기여자 ID를 가져와 createdByField에 저장합니다. 동시에 createdAt 필드도 현재 날짜 및 시간으로 설정됩니다.

    resolvedData对象和钩子想要进行的任何其他更改)。另一种方法是在字段级别添加resolvedData函数,但这样我们就需要两个单独的函数 - 一个用于createdAt,另一个用于createdBy이 후크는 목록 수준에서 구성되므로 전체 항목에 대한 데이터를 반환해야 합니다(기본적으로 - 각 함수는 단일 값을 반환합니다. 이 차이점에 대한 자세한 내용은 Hooks Guide

    를 참조하세요.

    또한 후크를 액세스 제어access와 혼동하지 않는 것이 중요합니다. 즉, 기여자가 먼저 게시물을 작성할 수 있도록 허용해야 하는지 여부입니다. 이 예에서는 목록의

    구성에서 액세스 제어가 별도로 구성됩니다.

    마지막 참고사항 - 이 글을 쓰는 시점에는 Hooks API 문서resolveInput钩子(在列表和字段级别),但没有将其分解为不同的操作(即resolveInput.createresolveInput.update가 다루고 있습니다

    ). 이는 최근 구문 개선일 뿐이며 후크 사용 방법은 변경되지 않습니다. 문서에서 API만 사용하는 경우 위 코드는 다음과 같이 작성할 수 있습니다. 🎜 으아아아

    회신하다
    0
  • 취소회신하다