Firebase索引查询在不同平台上返回不同的结果

时间:2018-06-15 19:13:30

标签: ios firebase firebase-realtime-database

现在我正在对数据库执行索引查询,如下所示:

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查询失败?

0 个答案:

没有答案