我正在React Native和Firebase中构建一个应用程序。我在Firebase实时数据库中有一个用户表。这是该表的外观e
我想获得除当前用户之外的所有用户的列表。这是我正在尝试的代码:
const getUserList = async () => {
const currentuid = currentuser.uid;
try {
const allusers = query(ref(database, 'users/'),endBefore(currentuid));
console.log("searchusers: ", allusers);
onValue(allusers, (snapshot) => {
const data = snapshot.val();
console.log("data: ", data);
const users = Object.values(data);
setUsers(users);
});
} catch (error) {
console.error('Error retrieving user data:', error);
return [];
}
}
这将返回所有用户,我希望用户的uid不等于currentuid。在查询中使用not()在最新版本中不起作用,但我想知道是否有任何替代方案。
我想我也可以从DB中获取所有用户,然后使用javascript的filter函数来实现这一点,但我希望通过直接查询数据库来实现这一结果
1条答案
按热度按时间8i9zcol21#
要解决这个问题,你必须使用not-in操作符。你最多可以合并10个
!=
(not equal)子句。因此,not-in
查询将返回id
字段存在、不为空并且不匹配任何比较值的所有文档。因此,如果您只需要一个UID,将其添加到列表并将该列表传递给查询。