Мне нужно обработать случай, когда моя база данных не имеет каких-либо подходящих результатов для equalTo ().В настоящее время приведенный ниже код возвращается только в том случае, если у меня есть соответствующий элемент, в случае отсутствия соответствия он вообще не возвращается.Посоветуйте, пожалуйста, как с этим справиться?
function getActivitySurvey(pin) {
return new Promise((resolve, reject) => {
var ref = admin.database().ref("activity-survey");
ref.orderByChild("pin").equalTo(pin.toString()).once('child_added')
.then((snapshot) => {
if (snapshot) {
resolve(snapshot);
} else {
reject(new Error('No ActivitySurvey'));
}
}).catch( () => {
reject(new Error('No snapshot'));
})
})
}
Редактировать: с тех пор я изменил код, чтобы он выглядел так, как показано ниже, в случае, если для значения пин-кода, которого нет в базе данных, указана единственная строка, которая получает вывод на консоль:'getActivitySurvey', функция в конце концов отключается, но никогда не возвращает:
function getActivitySurvey(pin) {
return new Promise((resolve, reject) => {
console.log('getActivitySurvey')
var ref = admin.database().ref("activity-survey");
ref.orderByChild("pin").equalTo(pin.toString()).once('child_added').then((snapshot) => {
console.log('have snapshot')
if (snapshot.exists()) {
resolve(snapshot);
} else {
console.log('Rejecting ActivitySurvey')
reject('error');
}
}).catch( (err) => {
console.log('Caught error')
reject('err');
})
})
}