【发布时间】:2018-09-27 09:15:40
【问题描述】:
当我的数据库没有任何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'));
})
})
}
编辑: 我已经将代码修改为如下所示,如果指定了数据库中不存在的 pin 值,则输出到控制台的唯一行是“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');
})
})
}
【问题讨论】:
-
您的意思是要查询
pin为空(或不存在)的记录? -
记录不存在——因此与 db 中的非空引脚不匹配。
标签: javascript firebase firebase-realtime-database firebase-admin