Docs Menu
Docs Home
/
MongoDB Shell
/

스크립트 고려사항

이 페이지의 내용

  • 생성자
  • 제너레이터 함수
  • 배열 정렬
  • JavaScript 세터

데이터베이스 쿼리 결과는 다음 컨텍스트 내에서 전달될 수 없습니다.

  • 클래스 생성자 함수

  • 비동기 제너레이터 함수

  • 배열의 .sort() 에 대한 콜백

  • 클래스 내 JavaScript 세터

데이터베이스 호출 결과에 액세스 하려면 비동기 함수 를 .map()사용하세요. , 비동기 생성기 함수 , 또는 .

다음 생성자는 작동하지 않습니다.

// This code will fail
class FindResults {
constructor() {
this.value = db.students.find();
}
}
// This code will fail
function listEntries() { return db.students.find(); }
class FindResults {
constructor() {
this.value = listEntries();
}
}

대신 async 함수를 사용합니다.

class FindResults {
constructor() {
this.value = ( async() => {
return db.students.find();
} )();
}
}

참고

비동기 JavaScript로 작업하는 대신 클래스 내에서 데이터베이스 작업을 수행하는 메서드를 만들 수도 있습니다.

class FindResults {
constructor() { }
init() { this.value = db.students.find(); }
}

이 클래스를 사용하려면 먼저 클래스 인스턴스를 구성한 다음 .init() 메서드를 호출하세요.

다음 제너레이터 함수는 작동하지 않습니다.

// This code will fail
function* FindResults() {
yield db.students.findOne();
}
// This code will fail
function listEntries() { return db.students.findOne(); }
function* findResults() {
yield listEntries();
}

대신 async generator function을(를) 사용합니다.

function listEntries() { return db.students.findOne(); }
async function* findResults() {
yield listEntries();
}

다음 배열 정렬은 작동하지 않습니다.

// This code will fail
db.getCollectionNames().sort( ( collectionOne, collectionTwo ) => {
return db[ collectionOne ].estimatedDocumentCount() - db[ collectionOne ].estimatedDocumentCount() )
} );

대신 .map()을(를) 사용합니다.

db.getCollectionNames().map( collectionName => {
return { collectionName, size: db[ collectionName ].estimatedDocumentCount() };
} ).sort( ( collectionOne, collectionTwo ) => {
return collectionOne.size - collectionTwo.size;
} ).map( collection => collection.collectionName);

배열 정렬에 대한 이러한 접근 방식은 지원되지 않는 해당 코드보다 성능이 더 좋은 경우가 많습니다.

다음 JavaScript 세터는 작동하지 않습니다.

// This code will fail
class TestClass {
value = 1;
get property() {
return this.value;
}
// does not work:
set property(value) {
this.value = db.test.findOne({ value });
}
}

돌아가기

코드 범위 지정