Construa recursos sociais rapidamente com reações de mangusto-um minúsculo plug-in de Mongoose pronto para produção para reações

O Mongoose-Reactions é um plug-in leve e digno de mangusto que adiciona reações polimórficas do tipo Laravel (curtidas, amores, risos, cordas personalizadas) a qualquer modelo. Esta postagem mostra por que você o desejará em sua pilha, como funciona, exemplos de iniciantes rápidos, dicas de escala e como você pode ajudar o projeto a crescer (⭐ github!). O que isso resolve e por que você deve se importar se criar recursos sociais (postagens, comentários, fotos, produtos com curtidas), você precisa de uma maneira rápida, escalável e amiga do desenvolvedor de anexar reações a qualquer modelo. Reações de mangusto: armazena reações em uma única coleção indexada para contagens e consultas eficientes. Funciona polimorficamente (uma coleção de reações – muitos modelos). Está pronto para o TypeScript e testado para casos de borda de simultaneidade comuns. Fornecem estatísticas e ajudantes de instância fáceis: React, não reagente, togglereation, getReactionCounts, getUserreations. Reproduz muito bem com transações e consultas de agregação em massa. Se você deseja enviar recursos sociais rapidamente, evite matrizes ad-hoc personalizadas em seus documentos e manter seu código limpo e sustentável-este plugin é para você. Por que não apenas as reações da loja no documento pai? Muitos aplicativos em estágio inicial colocam curtidas como uma matriz nos documentos post. Isso parece simples, mas rapidamente se torna doloroso: as grandes matrizes cultivam documentos do MongoDB para tamanhos desajeitados e prejudicam o desempenho. A contagem e listagem em muitas postagens (ou entre os modelos) se torna cara. A exclusão de reações de um usuário (GDPR) requer varredura de muitos documentos. A análise de modelos cruzados (postagens mais reagidas vs comentários) é difícil. Ao mover reações para uma coleção pequena, indexada e dedicada que você obtém: o (1) grava (documentos somente de append), agregação eficiente para contagens e migrações mais simples. Fonte única de verdade para reações e recursos mais fáceis (desfazer, alternar listas por usuário). Capacidade de adicionar adaptadores posteriormente (Redis para contadores, adaptador PRISMA, etc.). Características Polimórficas: Reações de armazenamento para postagem, comentário, foto etc., em uma coleção. Configurável: Modo de reação única por usuário (padrão) ou multi-reação por usuário. Validação: tipos de reação da lista de permissões (por exemplo, [‘like’,’love’,’haha’]) com normalização insensível ao caso. Friendly da transação: as operações de gravação podem aceitar uma sessão. Ajudadores em massa: obtenha contagem de muitos reatíveis em uma agregação. Ajudantes do GDPR: Utilitários para excluir todas as reações para um usuário ou um reatável. TIPOS DE TIPO DE TIPO + A STAFLIFICADO DE TESTE VITEST. Quickstart-Instale e use Instalação: Instale o NPM REAÇÕES MONGOOSE MONGOOSE # OU PNPM Adicionar reações de mangusto de mongOose Digite Modo de tela cheia Modo de tela cheia Uso básico: importar mongustoe de “Mongoose”; importar reações plágicas de “reações de mangusto”; const Postchema = new Mongoose.schema ({title: string}); Postchema.plugin (Reactionsplugin, {reactionTypes: [‘like’,’love’,’haha’,’angry’]// WHITELIST OPCIONAL ALIM MULTIPLEREACTIONSPERSER: FALSE, // PADRÃO}); const post = Mongoose.model (‘post’, pós -verso); // react aguarda post.react (postId, userID, ‘like’); // chamada estática Aguarda PostDoc.React (UserID, ‘Love’); // Call // contagem (não precisa passar o nome do modelo; plug -in inger -o) const counts = aguart post.getReactionCounts (postId); // -> {como: 12, amor: 3} Digite o modo de tela cheia Sair da tela cheia Modo Expresso Amostra de Rota: Importar Express de ‘Express’; Const Router = Express.Router (); router.post (‘/posts/: id/reações’, assync (req, res, próximo) => {try {const userId = req.user._id; // assuma o middleware de autentismo res.json ({ok: true, conta}); Digite métodos principais do modo de tela cheia do modo de tela cheia (amigável), expostos a qualquer modelo para o qual aplique o plug-in: Model.react (ReactableId, UserID, Reação, Meta?, {Session?})- Criar/atualizar o modelo de reação.UNRACT (reactable, SentID, reação? Model.TogGleReaction (ReactableId, UserID, Reação, Meta?, {Session?}) – Alterna o Model.GetReactionCounts (ReactableId) – {Like: 10, Love: 2} (Model Infers) Model.GetuseReActions (ReactableId, UserId) – ReactionDoc[] (útil quando múltiplas permitidas) Model.ListReActors (ReactableId, OPTS) – Liste os usuários que reagiram com o filtro de reação opcional, os ajudantes de instância paginados mapeiam para as estáticas, para que você possa usar o PostDoc.react (UserID, ‘como’). Polimorfismo e nomes de modelos – Os detalhes pequenos, mas cruciais, o plug -in armazenam um reactableModel (recomendamos o nome do modelo de mangusto como ‘post’) ao lado do ReactableId. Isso evita colisões quando dois modelos compartilham o mesmo valor de identificação e torna o POPULE () e as verificações de permissões diretas. Inferimos isso. Post.GetReActionCounts (ID) é suficiente. Se você gosta do plug -in, considere: ⭐ Estrela o repositório do Github – as estrelas ajudam o projeto a aparecer em pesquisas e atrair colaboradores.

Fonte

Você pode ter perdido