创建特定类型的数组并重用它

我在为我的 graphql 解析器创建有效负载时遇到问题。如何重写它以返回完成的数组?


我被困在里面,无法返回数据。c.OnHTML("article", func(e *colly.HTMLElement) {}


type Article struct {

    Title     string `bson:"title"`

    Source    string `bson:"source"`

    Url       string `bson:"url"`

    Timestamp string `bson:"timestamp"`

}

func (r *RootResolver) News() ([]models.Article, error) {


    c := colly.NewCollector(

        colly.MaxDepth(2),

        colly.Async(),

    )


    c.Limit(&colly.LimitRule{Parallelism: 10})


    articles := []models.Article{}


    c.OnHTML("article", func(e *colly.HTMLElement) {

        articleModel := []models.Article{

            {

                Title:     e.ChildText("h3 a"),

                Source:    e.ChildText("a[data-n-tid]"),

                Timestamp: e.ChildAttr("div:last-child time", "datetime"),

                Url:       e.ChildAttr("a[href]", "href"),

            },

        }


        fmt.Println(articleModel)

    })


    c.Visit(SOMEURLHERE)

    c.Wait()


    return articles, nil

}


三国纷争
浏览 75回答 1
1回答

人到中年有点甜

如果需要获取完整的文章列表,则需要将新文章追加到函数内部的切片中,而不是创建新切片。articlesc.OnHTML并返回方法的切片末尾。articlesNews()    articles = append(articles, models.Article{         Title:     e.ChildText("h3 a"),         Source:    e.ChildText("a[data-n-tid]"),         Timestamp: e.ChildAttr("div:last-child time", "datetime"),         Url:       e.ChildAttr("a[href]", "href"),     })在当前实现中, 创建类型的空片。在 内部,您创建了另一个名为 和 元素的类型切片。这两个切片没有任何联系。因此,您需要将新元素附加到切片中,并将其与文章一起返回。articles := []models.Article{}models.Articlec.OnHTMLmodels.ArticlearticleModelarticles
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go