我正在使用Firebase开发聊天。但我实施一个地狱班有问题。我需要下一个功能: - 如果用户是hellbanned,他可以写消息,他可以看到和阅读它,但其他用户不应该看到这些消息。 我没有正确解决这个问题的方法。你有没有实现这个hellban功能的api?或者你可以给我一些提示吗?
答案 0 :(得分:1)
这实际上取决于您的要求。
如果您希望禁止使用地狱禁止用户的所有消息(包括之前发送的和禁止后发送的消息),那么你应该在用户对象上创建一个banned
布尔属性并将其设置为true
。确定是否应该向另一个用户显示消息是一个问题,即检查是否“禁止”#39;在" on-new-message"中的违规者用户对象上设置了标志。处理程序。
如果你想采取标记个别消息的路线(如果你只是想在用户被禁止后发送发送的阻止消息的情况下),那么你也应该设置标志message
对象除了在违规者的user
对象上设置标志外。在您写出新消息之前,请检查消息的编写者是否已被禁止,然后是否将消息的banned
标志设置为true。在你的" on-new-message"处理程序检查banned
标志是否已设置,然后再显示给用户。
在任何一种情况下,您还应该检查发送到" on-new-message"的消息的userId。如果已由登录用户写入,则显示它,无论banned
状态如何。
引导您完成的一些示例(在JavaScript中):
/* ref is on messages collection */
//Retrieval
ref.on("child_added", function(snapshot, prevChildKey) {
var newMessage = snapshot.val();
if(newMessage.userId == user.id || !newMessage.banned) {
/* Display Message */
}
});
//Posting
var newMessage = {
userId = user.id
...
}
if(user.banned){
newMessage.banned = true;
}
ref.push(newMessage)