# Custom Return Output

커스텀 리턴 출력은, 설정한 조건에 따라 서로 다른 액션을 출력해요.&#x20;

<div align="left"><figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FdsaNDcJLKXN50yY96Dsr%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202024-01-22%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.06.17.png?alt=media&#x26;token=74b27bef-be42-4437-b890-663276769cd0" alt="" width="344"><figcaption></figcaption></figure></div>

간단한 예로 설명할게요.&#x20;

다음의 예시 앱은 학생과 선생님이 쓰는 커뮤니티가 구분되어 있어요.

버튼을 누르면 유저를 선생님인지 학생인지 판단한 뒤에 특정 게시판으로 이동하는 로직을 만들어 볼게요.

유저 구분은 유저 정보(\_users) 메타에서 옵션으로 설정했어요.

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FP59BorRASUp6QqsDR8py%2Fimage.png?alt=media&#x26;token=a745cd25-aa2c-4d33-95a7-0ceb4cff2bff" alt=""><figcaption></figcaption></figure>

버튼을 눌렀을 때 로직이 실행되도록 아래 사진처럼 설정했어요.

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2F7UcHPQbQXHAvUL5ruaIB%2Fimage.png?alt=media&#x26;token=9a84a128-ce66-4535-a3be-c3068c67024e" alt=""><figcaption></figcaption></figure>

이벤트 타입은 상황에 맞게 buttonClick 이라고 설정했어요.&#x20;

추가 데이터는 아래와 같이 작성했어요. userId에 버튼을 누른 유저 정보를 넣어준다는 뜻이에요.

```
{
	"userId": "userInfo._id.oid"
}
```

로직을 실행하기 위해 이벤트 타입과 컬렉션 명을 작성해요. 위의 액션타입 설정 이미지와 같이, 로직을 구분할 때 보통 두 가지를 함께 봐요.

컬렉션 명은 어떤 메타에서 사건이 일어나는지를 뜻하고 이벤트 타입은 어떤 상황에 로직이 실행되는지, 플로우 옵션은 어떤 실행을 할지 설정해요.

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FhYkTLM6G6F7cwLSzH6Pm%2Fimage.png?alt=media&#x26;token=854e5057-7cfe-4c3f-aaf5-9c7ef8b1d916" alt=""><figcaption></figcaption></figure>

이벤트 옵션은 특정 조건에만 실행되도록 설정하는 부분이라 여기서는 비워주세요.

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FyMO6MC5eEUfRNPipRtCz%2Fimage.png?alt=media&#x26;token=8d926fbd-a5cf-4708-99e7-a8ef58c6424a" alt=""><figcaption></figcaption></figure>

세부 처리 조건에 @query와 @setValue를 설정해요.

@query는 어떤 데이터 값을 가져올 때, @setValue는 특정한 값에 데이터를 입력할 때 사용해요.

버튼을 누른 유저의 \_id를 가져올게&#xC694;*. \_*&#x69;d를 조회할 때는 오른쪽에 oid값을 넣어야 해요.

@setValue로 특정한 값에 유저 데이터를 넣어줄게요.

\#first는 가져온 데이터 중 첫번째 데이터를 의미하고 tmpDocument.findDocument는 방금 찾은 데이터를 뜻해요.

여기까지 과정을 정리하면 버튼을 누른 유저 정보를 가져와, userDoc이라는 값에 넣어줬어요.

```
{
	"#find": "{'_id' : 'tmpDocument.documentJson.userId'}",
	"#collection": "_users"
}
```

```
{
	"userDoc": {
		"#first": "tmpDocument.findDocument"
	}
}
```

다음엔 @if 이벤트가 2개 있어요. 구성이 같으니 첫 번째 @if의 설명을 참고해 주세요.

\#condition으로 유저가 선생님일 때를 특정해요.

\#eq 조건으로 tmpDocument.userDoc.userStatus가 teacher와 같을 때를 특정했어요.

그런 뒤 #ifTrue와 #ifFalse로 참일 때와 거짓일 때 어떻게 할지 설정할 수 있어요.

참일 때 @setValue로 custom이라는 값에 teacherMulti메타로 이동하는 액션을 넣어줬어요. 다른 액션도 가능해요.

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FkoXFOp2EWLCK04mxlrJ4%2Fimage.png?alt=media&#x26;token=9a4eab98-38a3-478d-85a0-2782bdc1555a" alt=""><figcaption></figcaption></figure>

```
{
	"#left": "tmpDocument.userDoc.userStatus",
	"#right": "teacher"
}
```

```
{
	"custom": {
		"action": {
			"type": "multiList",
			"metaCode": "teacherMulti"
		}
	}
}
```

학생일 때도 똑같이 설정해주면 돼요.

<figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2Flwk5TGK3zVSSxNRc5B11%2Fimage.png?alt=media&#x26;token=3f69a767-fcd5-4f9b-89c6-4dd899bfa1ed" alt=""><figcaption></figcaption></figure>

```
{
	"#left": "tmpDocument.userDoc.userStatus",
	"#right": "student"
}
```

```
{
	"custom": {
		"action": {
			"type": "multiList",
			"metaCode": "studentMulti"
		}
	}
}
```

플로우 옵션의 커스텀 리턴에 아래처럼 작성해요.

저장 후 실행하면 학생이면 학생 게시판, 선생님이면 선생님 게시판으로 이동해요.

<div align="left"><figure><img src="https://3976660509-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FDgfvhQgmY9NbRK0Sln7j%2Fuploads%2FcBHx0dkCRZ13555ynE7o%2Fimage.png?alt=media&#x26;token=ef51ab84-6a07-46e0-a1e5-d64e0a5b40e1" alt="" width="375"><figcaption></figcaption></figure></div>

결제 여부에 따라서 미 결제 상태라면 결제창으로 이동하고 결제를 했다면 컨텐츠로 이동하는 식 등, 많은 부분에서 커스텀 리턴을 활용해 보세요.

23.11.09 Jipang

**Generate Custom Return Output**

This function enables the operation to produce a custom return output.&#x20;

(This involves using the customReturn value without the need for a separate event flow meta.)

2023.08.11 Song
