아래의 firebase 읽기 쿼리 성능 테스트는 this SO 질문입니다. 방금 firebase 인스턴스로 변경하고 순차 테스트를 제거하여 병렬 테스트 만 제거했습니다.Firebase RangeError : 최대 호출 스택 크기 초과
문제는 내가이 코드를 실행 언제든지 내가 만드는 것입니다 길이의 배열의 결과로 루프 i < 12
에 대한 : 32,768
, 나는 그 호출 스택을 초과라는 오류가 계속 : RangeError: Maximum call stack size exceeded
하지만 난 알아낼 수있는 이 오류를 일으키는 중 ... 나는 localhost 및 구름 함수를 통해 테스트했지만 아무런 성공도 시도하지 못했습니다.
(참조 된 SO 테스트는 i < 12에서 작동하지만 13으로 변경하면 끊어짐).
function loadVideosParallel(videoIds, callback) {
Promise.all(
videoIds.map((id) => {
return admin.database().ref("test").child(id).once('value')
.then((snapshot) => {
return snapshot;
})
})
).then((r) => callback());
}
function loadVideosForUser(loadVideosParallel, callback) {
admin.database().ref("test").once('value').then((snapshot) => {
var videoKeys = Object.keys(snapshot.val());
for (var i=0; i < 13; i++) {
videoKeys = videoKeys.concat(videoKeys);
}
loadVideosParallel(videoKeys, function() {
if (callback) callback();
});
})
}
let start = Date.now();
loadVideosForUser(loadVideosParallel, function() {
const endTime = (Date.now() - start)+'ms';
console.log('parallel done after '+ endTime +'ms');
});
2017-12-20T23:26:28.527Z E helloWorld: RangeError: Maximum call stack size exceeded at T (/user_code/node_modules/firebase-admin/lib/database/database.js:139:366) at /user_code/node_modules/firebase-admin/lib/database/database.js:190:120 at ta (/user_code/node_modules/firebase-admin/lib/database/database.js:45:40) at ua (/user_code/node_modules/firebase-admin/lib/database/database.js:45:89) at Ag (/user_code/node_modules/firebase-admin/lib/database/database.js:190:93) at /user_code/node_modules/firebase-admin/lib/database/database.js:195:260 at Oc (/user_code/node_modules/firebase-admin/lib/database/database.js:85:363) at Oc (/user_code/node_modules/firebase-admin/lib/database/database.js:85:449) at Oc (/user_code/node_modules/firebase-admin/lib/database/database.js:85:449) at Nc (/user_code/node_modules/firebase-admin/lib/database/database.js:85:316) 2017-12-20T23:26:29.758741829Z D helloWorld: Function execution took 5107 ms, finished with status: 'crash'
누구나 어떤 통찰력을 가지고? 나는 /user_code/node_modules/firebase-admin/lib/database/database.js
파일을 보았지만 축소되었으므로 실제로 어떤 일이 일어 났는지 알 수는 없습니다.
불편한 코드를보고 싶다면 : https://github.com/firebase/firebase-admin-node –
질문을하기 전에 거기에 쳐다 보았지만 데이터베이스/database.ts 파일에는 동일하지 않습니다. 훨씬 더 짧아. – linasmnew