现在我正在对数据库执行索引查询,如下所示:
people {
person_uid {
external_service_uid = "12345678"
}
}
此查询旨在获取所有人员结构
external_service_uid
匹配uid_to_match
,查询在Swift的firebase SDK中执行,如下所示
let uid_to_match = "12345678"
let usersRef = Database.database().reference().child("people")
usersRef.queryOrdered(byChild: "external_service_uid")
.queryEqual(toValue: uid_to_match)
.observeSingleEvent(of: .value, with: { snapshot in // for now, doesn't work
// snapshot is NSNull
}, withCancel: { error in
// doesn't happen
})
此查询返回NSNull(不返回任何内容)。这是不正确的。为了测试查询本身是否错误,我在云函数上测试了查询
export const queryByFacebookUid = functions.https.onRequest((req, res) => {
const db = admin.database();
db.ref('/people')
.orderByChild('external_service_uid')
.equalTo(req.query.uid)
.once('value').then(snapshot => {
res.send(snapshot.val());
}).catch(error => {
console.error(error);
res.status(400).send(error);
});
});
在云函数上运行完全相同的查询时,它返回了正确的值:关联人。
怀疑我构造查询的方式存在问题,我使用了firebase数据库分析器并记录了两个单独的查询,这导致两个相同的查询只有userAgent部分(os,userAgentString和version)和时间戳不同。 querySet本身是相同的。如果需要,我可以发布完整的查询。
为什么iOS查询失败?