string長でソート(feat.sequelize)(Develog 11日目)


フィードバックを受信して変更したDB Schema
良い実施
「いいね」の機能は次のとおりです.
  • 「賛」機能は会員のみ使用可能.
  • 1人の会員は複数の投稿でそれぞれ「いいね」を押すことができます.
  • 1つの投稿は複数の会員から好評を得ることができる.
  • DBを構成するテーブルは2つしかないので、複数のテーブルではなく、メンバー・テーブルと投稿テーブルにそれぞれ良い情報を入力する必要があります.
    「メンバー」(Member)テーブルの「好き」(Liked)テーブルと「投稿」テーブルの「好きユーザーid」(Like user id)テーブルは、それぞれ「好き」情報の列である.stringifyを使用して、配列に情報を入れます.
    このため、サーバはクライアントからメンバーの情報(user.id)と投稿の情報(article.id)を受信する.次にlike user idに入力された情報(各id)があるかどうかを確認し、ある場合は削除し、ない場合は追加します.
    ポイント順
    「いいね」機能が実装されており、「いいね」順にソートすることもできます.
    最初は「いいね」というメッセージが順番に並んでいたので、それを出して長さを計算すればいいのですが、考えてみれば、どうせ「いいね」という順番が多いなら、あえて出す必要はありません.逆に,賛情報を保存する列の長さを比較し,最長から導入した.
    いいねの総和も簡単に実現できます.サーバは配列の長さをチェックし、数値として送信する場合がありますが、配列自体を送信してクライアント上で配列の長さをチェックする方法は、より容易に実現できます.投稿機能を実装するお客様チームメンバーと議論しました.
    like user id列を使用して長い順序で並べられたsequelizeクエリー文は、次のとおりです.(必要な部分のみ抜粋しています.)
    await article.findAll({
          attributes: ['id', 'title', 'thumbnail_type', 'thumbnail_color', 'ingredient', 'like_user_id'],
          order: [[sequelize.fn('length', sequelize.col('like_user_id')), 'DESC']],
        });
    参照されるStackoverflow文および正式な資料(参考資料1参考資料2および参考資料3)は、リンクとして保持される.
    日程を調整する.
    ヌードマシン-最小限の実施は想像以上に速い.導入はしばらく行われていますが、追加可能な機能があるかどうかを考慮する必要があります.
    エンジニアから検索機能でよく使われるフレックス検索のヒントをもらいました残りの時間で明日と今週末に挑戦できるかどうか