Golang:多个SQL查询生成额外的空{{range.}

Golang:多个SQL查询生成额外的空{{range.},sql,postgresql,templates,go,Sql,Postgresql,Templates,Go,在应用程序中,我将使用完全不同的第二个查询 查询第二个查询将非常长SELECT SIMILARITYquery。 在这个问题中,我给出了一个简单的查询,以便于理解 我需要在模板中打印PostgreSQL中的数据。一切正常,但输出HTML有额外的范围 下面是HTML输出。您可以看到没有值的额外范围: <table> <tr> <th>Title</th> <th>Content</th>

在应用程序中,我将使用完全不同的第二个查询 查询第二个查询将非常长
SELECT SIMILARITY
query。 在这个问题中,我给出了一个简单的查询,以便于理解

我需要在模板中打印PostgreSQL中的数据。一切正常,但输出HTML有额外的
范围

下面是HTML输出。您可以看到没有值的额外
范围

<table>
    <tr>
        <th>Title</th>
        <th>Content</th>
    </tr>

    <tr>
        <td>Nation</td>
        <td>Nation has various meanings, and the meaning has changed over time</td>
    </tr>

    <tr>
        <td></td>
        <td></td>
    </tr>

</table>

<h1>ID number:</h1>

<h3></h3>

<h3>5</h3>
下面是模板
public/views/testhere.html

{{define "onlytestingtpl"}}
<table>
    <tr>
        <th>Title</th>
        <th>Content</th>
    </tr>
    {{range.}}
    <tr>
        <td>{{.Title}}</td>
        <td>{{.Content}}</td>
    </tr>
    {{end}}
</table>

<h1>ID number:</h1>
{{range.}}
<h3>{{.Idnumber}}</h3>
{{end}}

{{end}}
{{define“onlytestingtpl”}
标题
内容
{{range.}}
{{.Title}
{{.Content}
{{end}
身份证号码:
{{range.}}
{{.Idnumber}}
{{end}
{{end}

我对模板中的
范围有感觉,但我不知道,因为没有错误

我觉得它很合适。您正在运行两个单独的查询:

rows, err := db.Query("SELECT title, content FROM gallery WHERE uri=$1", c.Param("uritext"))
anotherquery, err := db.Query("SELECT id AS idnumber FROM gallery WHERE uri=$1", c.Param("uritext"))
然后从这两者创建一个切片:

gallery = append(gallery, g)
gallery = append(gallery, g)
因此,您有两行:

{ "Nation", "Nation...", 0 }
{ "", "", 5 }
这就是你想要的吗?如果要合并它们,只需将查询更改为:

SELECT title, content, id as idnumber FROM gallery WHERE uri=$1
如果您想要两个单独的列表,那么您可能应该有两个单独的类型:

type Gallery struct {
    Title, Content string
}
type IDNumber string
构建两个单独的列表,并为渲染使用组合对象:

type Model struct {
    Galleries []Gallery
    IDNumbers []IDNumber
}
return c.Render(http.StatusOK, "onlytestingtpl", Model{
    Galleries: galleries,
    IDNumbers: idnumbers,
})
您的模板将以以下内容结束:

{{range .Galleries}}
<tr>
    <td>{{.Title}}</td>
    <td>{{.Content}}</td>
</tr>
{{end}}
{{range.Galleries}
{{.Title}
{{.Content}
{{end}

您没有扫描另一个查询中的标题和内容

err := anotherquery.Scan(&g.Idnumber)

因此,
g
的标题和内容被设置为空字符串。

在应用程序中,我将使用完全不同的查询进行第二次查询。第二个查询将非常长
SELECT SIMILARITY
query。在上面的问题中,我给出了一个简单的查询,以使其更容易理解。我现在正试图理解,但仍然无法使其正常工作。你的意思是?:
err:=anotherquery.Scan(&g.Title,&g.Content,&g.Idnumber)
。对不起,我很难回答understand@apasajja对否则,您只扫描
Idnumber
。错误
sql:Scan中预期有1个目标参数,而不是运行建议的代码时显示的3个目标参数。因为第二个查询selectone列,所以我对它进行了排序。我无法合并查询,因为这是占位符查询。真正的问题很长。我意识到卡莱布说的是对的。对
范围进行混淆
,使其相互继承。我需要使这两个范围不同。
err := anotherquery.Scan(&g.Idnumber)