review.controller.js 2.41 KB
Newer Older
1
2
import Review from '../models/Review.js'
import cheerio from "cheerio";
Kim, Chaerin's avatar
서연    
Kim, Chaerin committed
3
import axios from 'axios';
4

Kim, Chaerin's avatar
Kim, Chaerin committed
5
const search = async (req, res) => {
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
6
    try {
Kim, Chaerin's avatar
Kim, Chaerin committed
7
8
        let reviews = []
        console.log(req.reviews, "제발")
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
9
10


Kim, Chaerin's avatar
Kim, Chaerin committed
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
        let url = "https://www.google.com/search?q=" + encodeURI(req.query.keyword) + `+site%3Atistory.com&start=${Number(req.query.index) * 10}`
        console.log(url)
        let response1 = await axios.get(url)
        let $1 = cheerio.load(response1.data);
        $1('.kCrYT').each(async function (i) {
            console.log("3")
            let title = $1(this).find('h3').text()
            let searchParams = new URLSearchParams($1(this).find('a').attr('href'));
            let link = searchParams.get("/url?q")
            let summary = $1(this).find('.s3v9rd').find('.s3v9rd').text()
            if (title) {
                reviews[i] = { title: title, link: link }
            } else if (summary) {
                reviews[i - 1] = { ...reviews[i - 1], summary: summary }
                reviews = reviews.filter(e => e)
            }
        })
        // reviews.forEach(async (review, i) => {
        //     await Review.updateOne({ link: review.link }, { $push: { bookmark: req.query.keyword } })
        //     const reviewss = await Review.findOne({ link: review.link })
        //     if (!reviewss) {
        //         // reviews["keyword"] = [req.query.keyword]
        let newReviews = []
        newReviews = [...newReviews, ...reviews]
        //         await new Review(review).save()
        //     }
        // })
        // console.log(req.reviews, "걸러낸 리뷰즈입니다")
        // const a = await Promise.all(newReviews)
        // console.log(a, "2")
        console.log(req.query.index, "인덱스ㅡㅡ")
        res.status(200).send({ review: newReviews, db: true, index: Number(req.query.index) + 1 })
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
43
44
45
    } catch (error) {
        console.log("6")
        console.log(error)
46
47
48
    }
}

Kim, Chaerin's avatar
?    
Kim, Chaerin committed
49

Kim, Chaerin's avatar
Kim, Chaerin committed
50
51
const find = async(req, res, next) => {
    console.log("7", req.query)
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
52
    const keyword = req.query.keyword
Kim, Chaerin's avatar
Kim, Chaerin committed
53
54
55
    if (req.body.db) {
        next()
    }
Kim, Chaerin's avatar
Kim, Chaerin committed
56
    await Review.find({ keyword: keyword }, function (err, reviews) {
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
57
        req.reviews = []
Kim, Chaerin's avatar
Kim, Chaerin committed
58
        if (reviews) {
Kim, Chaerin's avatar
Kim, Chaerin committed
59
60
            if (reviews.length > 5) {
                res.status(200).send({ review: reviews, db: true, message: "제발용" })
Kim, Chaerin's avatar
.    
Kim, Chaerin committed
61
            }
Kim, Chaerin's avatar
Kim, Chaerin committed
62
63
64
65
            req.reviews = reviews
        }
        next()
    })
66
}
67
export default { search, find }