medusa에서 사용자 지정 서비스 만들기
6782 단어 javascriptbeginnerswebdev
서비스는 애플리케이션 전체에서 사용할 수 있는 것입니다.
예를 들어 번역 서비스를 추가하고 싶다고 가정해 보겠습니다.
medusa 서버 프로젝트를 열고
src/services
안에 새 파일을 만들어야 합니다.서비스가
translateService
인 경우 파일 이름을 translate.js
(서비스 부분이 없는 파일 이름)로 지정해야 합니다.메두사에서 서비스 만들기
가장 기본적인 서비스 파일은 다음과 같습니다.
import { TransactionBaseService } from '@medusajs/medusa';
class TranslateService extends TransactionBaseService {
func() {
return '';
}
}
export default TranslateService;
보시다시피 이 서비스는
TransactionBaseService
를 확장하여 모든 기존 서비스 및 기타 서비스에 대한 액세스를 제공합니다.시험해 볼 수 있도록 모의 데모 함수를 만들어 봅시다.
번역의 경우 일부 매핑 테이블이 필요하지만 지금은 모형으로 만들어 보겠습니다.
const messages = {
en: {
title: 'Hello world',
},
nl: {
title: 'Hallo wereld',
},
};
class TranslateService extends TransactionBaseService {
translate(msg, locale) {
return messages[locale][msg] ?? msg;
}
}
이 번역 기능은 특정 메시지를 제공된 로케일로 번역할 수 있습니다. 일치하는 항목이 없으면 원본 메시지가 반환됩니다.
커스텀 서비스 이용하기
계속해서 이 맞춤 서비스를 어떻게 사용할 수 있는지 살펴보겠습니다.
우리가 이미 좋은 인트로를 가지고 있기 때문에 우리의 custom routes에서 사용할 것입니다.
제목을 얻을 새 경로를 추가해 보겠습니다.
router.get('/store/title', (req, res) => {
const translateService = req.scope.resolve('translateService');
const title = translateService.translate('title', 'en');
res.json({ title });
});
가장 먼저 할 일은 번역 서비스를 검색한 다음 제목에 대한 새 변수를 정의하고 특정 로케일로 제목을 요청하는 것입니다.
그리고 결국, 그것을 반환합니다.
서버를 스풀링하고 경로를 테스트하십시오.
이제 로케일을
nl
로 변경하고 다시 시도해 보겠습니다.const title = translateService.translate('title', 'nl');
번역이 없는 메시지를 요청할 수도 있습니다.
const title = translateService.translate('Products', 'en');
그리고 그게 다야. 이제 medusa에서 완전한 기능을 갖춘 맞춤형 서비스를 제공합니다.
읽어주셔서 감사합니다. 연결합시다!
제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나
Reference
이 문제에 관하여(medusa에서 사용자 지정 서비스 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dailydevtips1/creating-custom-services-in-medusa-2dkh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)