Skip to content
Snippets Groups Projects
articleService.js 2.02 KiB
Newer Older
  • Learn to ignore specific revisions
  • import Article from '../models/article.js';
    
    const articleService = {
      async createArticle(articleData) {
        try {
          const article = new Article(articleData);
          await article.save();
          return article;
        } catch (err) {
          throw err;
        }
      },
    
      async findArticleById(articleId) {
        try {
    
    Gwangbin's avatar
    Gwangbin committed
          const article = await Article
          .findById(articleId)
          .populate('author')
          .populate('comments.author')
          .populate('likes');
          return article;
        } catch (err) {
          throw err;
        }
      },
    
    Gwangbin's avatar
    Gwangbin committed
      async findArticlesByAuthor(authorId) {
        try {
          const articles = await Article
          .find({ author: authorId })
          .populate('author')
          .populate('likes');
          return articles;
        } catch (err) {
          throw err;
        }
      },
    
      async deleteArticle(articleId) {
        try {
          const article = await Article.findByIdAndDelete(articleId);
          return article;
        } catch (err) {
          throw err;
        }
      },
    
      async createComment(articleId, commentData) {
        try {
          const article = await Article.findById(articleId);
          article.comments.push(commentData);
          await article.save();
          return article;
        } catch (err) {
          throw err;
        }
      },
    
      async deleteComment(articleId, commentId) {
        try {
          const article = await Article.findById(articleId);
          article.comments.pull({ _id: commentId });
          await article.save();
          return article;
        } catch (err) {
          throw err;
        }
      },
    
      async setLike(articleId, userId) {
        try {
          const article = await Article.findById(articleId);
          if(article.likes.includes(userId)) {
            article.likes.pull({ _id: userId });
          }
          else {
            article.likes.push(userId);
          }
          await article.save();
          return article;
    
        } catch (err) {
          throw err;
        }
    
      },
    
      async findAllArticle() {
        try {
          const articlelist = await Article.find({}).populate('author', 'nickname').exec();
          return articlelist;
        } catch (err) {
          throw err;
        }
    
      }
    };
    
    export default articleService;