Keystone 관리자 목록보기에서 편리한 다운로드 링크는 CSV 파일의 모든 목록 항목을 내보내지만 일부 필드가 관계 유형 인 경우 내 보낸 CSV에는 다음과 같은 nmeaningful 문자열 (이름, 제목 등) 대신 Mongo ObjectID가 포함됩니다. 유능한.
ObjectID를 다른 필드로 매핑 / 교체하려면 어떻게해야합니까?
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] 삭제
몇 마디 만하겠습니다