사용자 정의 medusa 경로에서 서비스 사용

medusa의 또 다른 멋진 부분은 서비스를 사용하여 기존 기능과 상호 작용할 수 있다는 것입니다.

예를 들어 거기에서 ProductService에 액세스할 수 있습니다. 제품을 검색할 수 있을 뿐만 아니라 제품을 만들고 업데이트할 수도 있습니다.

사용자 지정 경로 내에서 이러한 서비스를 사용하는 방법을 살펴보겠습니다.

Medusa 루트에서 서비스 사용



이 예에서는 ProductService 를 사용하겠습니다. 먼저 custom route endpoint 을 추가해야 합니다.

사용자 지정 경로 내에서 다음과 같이 이 서비스를 할당하여 시작할 수 있습니다.

const productService = req.scope.resolve('productService');


모든 제품을 나열하고 싶다고 가정해 보겠습니다. 다음 명령으로 쉽게 할 수 있습니다.

router.get('/store/test', async (req, res) => {
  const productService = req.scope.resolve('productService');
  productService.list().then((products) => {
    res.json(products);
  });
});


이제 서버를 다시 시작하고 이 끝점을 쿼리하면 제품 목록을 볼 수 있어야 합니다. (내 데이터베이스에는 하나의 효과만 있습니다).



물론 이 정보를 정확하게 검색할 수 있는 엔드포인트가 이미 있으므로 그다지 유익하지 않습니다.
멋진 부분은 이 데이터를 조작하도록 선택할 수 있다는 것입니다.
재고가 있는 항목만 원한다고 가정해 보겠습니다.

router.get('/store/test', async (req, res) => {
  const productService = req.scope.resolve('productService');
  productService.list({}, { relations: ['variants'] }).then((products) => {
    res.json(
      products.filter((product) =>
        product.variants.some((variant) => variant.inventory_quantity >= 0)
      )
    );
  });
});


여기에 몇 가지 변경 사항이 있습니다. 자세히 살펴보겠습니다.
첫 번째는 제품 목록 함수에 인수를 전달하는 것입니다.
이러한 인수는 다음과 같습니다.
  • {} : 첫 번째 옵션은 쿼리할 매개변수입니다. 우리의 경우에는 특별한 사항이 없습니다
  • .
  • {relations:['variants']} : 쿼리에 특정 옵션을 추가하는 데 사용할 수 있습니다. 변형을 추가하고 싶습니다
  • .

    이 정보가 있으면 모든 제품을 필터링하고 적어도 하나의 변형에 재고가 있는 제품만 반환합니다.

    쿼리에서 재고 수준을 조정하여 재생할 수 있습니다.

    그게 다입니다. medusa의 서비스에서 질의하는 매우 강력한 방법입니다.

    읽어주셔서 감사합니다. 연결합시다!



    제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나

    좋은 웹페이지 즐겨찾기