KeystoneJS 목록 CSV 다운로드 / 내보내기에서 관계 필드 유형 개체 ID를 이름 / 제목으로 바꾸는 방법은 무엇입니까?

code_burgar

Keystone 관리자 목록보기에서 편리한 다운로드 링크는 CSV 파일의 모든 목록 항목을 내보내지만 일부 필드가 관계 유형 인 경우 내 보낸 CSV에는 다음과 같은 nmeaningful 문자열 (이름, 제목 등) 대신 Mongo ObjectID가 포함됩니다. 유능한.

ObjectID를 다른 필드로 매핑 / 교체하려면 어떻게해야합니까?

JME

Keystone에는 사용자 정의 CSV 내보내기 기능을 만들 수있는 문서화되지 않은 기능이 있습니다. 이 기능은 4 월에 다시 추가되었습니다 ( KeystoneJS Issue # 278 참조 ).

라는 스키마에 메서드를 추가하기 만하면됩니다 toCSV. Keystone은이 메소드에 대한 인수로 지정 될 때 다음 종속성 중 하나를 삽입합니다.

 - req (current express request object)
 - user (currently authenticated user)
 - row (default row data, as generated without custom toCSV())
 - callback (invokes async mode, must be provided last)

예를 들어 Mongoose Model.Populate 메서드를 사용하여 관계 필드의 개체 ID를 원하는 데이터로 바꿀 수 있습니다.

당신이 있다고 가정 Post으로 목록을 author의 필드 Types.Relationship다른 목록 (하자의 말에 User이) name필드. 다음을 수행하여 author개체 ID를 작성자 이름 ( User목록에서)으로 바꿀 수 있습니다.

Post.schema.methods.toCSV = function(callback) {

    var post = this,
        rtn = this.toJSON();

    this.populate('author', function() {
        rtn.author = post.author.name; // <-- author now has data from User list
        callback(null, rtn);
    });

};

.toCSV()Model컨텍스트 로 사용하여 반환 된 모든 문서에 대해 호출 됩니다. 비동기식으로 (위와 같이) 사용하는 경우 새 CSV 데이터를 콜백의 두 번째 인수로 전달하여 JSON 표현을 반환해야합니다. 동기식으로 사용할 때는 업데이트 된 JSON 객체를 반환하기 만하면됩니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관