【问题标题】:How to queries in supabase realtime?如何在 supabase 中实时查询?
【发布时间】:2022-10-21 08:34:31
【问题描述】:

大多数博客和堆栈都建议使用以下数据库进行聊天。

message_table
-id
-message
-conversationId
-sender
-receiverId

conversation_table
-id
-conversationId

现在message_table 看起来像这样。

因此,对于聊天屏幕,我订阅了消息表。

final mySubscription = supabase
  .from('message_table')
  .on(SupabaseEventTypes.all, (payload) {
    // Handle realtime payload
  })
  .subscribe();

如果 user1 和 user2 正在聊天,他们将从这个表中获取所有消息。

那么,如何在 supbase 中使用指定的 conversationId 过滤这些数据以停止接收其他用户的其他消息并减少带宽?

这个数据库可行吗?

【问题讨论】:

    标签: sql postgresql flutter dart supabase


    【解决方案1】:

    您可以像这样在实时侦听器上添加 eq 过滤器:

    supbase-flutter v1.X

    final subscription = supabase.channel('unique_channel').on(
        RealtimeListenTypes.postgresChanges,
        ChannelFilter(
          event: '*',
          schema: 'public',
          table: 'message_table',
          filter: 'conversationId=eq.conv12',
        ), (payload, [ref]) {
          // handle realtime here
    }).subscribe();
    

    supbase-flutter v0.X

    final subscription = supabase
      .from('message_table:conversationId=eq.conv12')
      .on(SupabaseEventTypes.all, (payload) {
        // Handle realtime payload
      })
      .subscribe();
    

    您可以在官方 Supabase 文档here 上阅读有关此功能的更多信息!

    【讨论】:

      【解决方案2】:

      查找其列满足过滤器的所有行。

      var conversationId = yourvalue ;
      final mySubscription = supabase
        .from('message_table')
        .select('message, conversationId, sender , receiverId')
        .eq('conversationId', conversationId) // Correct
        .on(SupabaseEventTypes.all, (payload) {
          // Handle realtime payload
        })
        .subscribe();
      
      

      【讨论】:

      • 这行不通。我们不能链接 .eq.on
      猜你喜欢
      • 2022-12-17
      • 2021-03-07
      • 2021-09-25
      • 1970-01-01
      • 2021-09-20
      • 2022-11-28
      • 2022-11-14
      • 1970-01-01
      • 2023-02-10
      相关资源
      最近更新 更多