gpt4 book ai didi

google-app-engine - 添加 *datastore.Key 到 slice

转载 作者:IT王子 更新时间:2023-10-29 01:40:17 25 4
gpt4 key购买 nike

我正在使用模板成功获取所有数据并显示在表格中。我在此代码中使用 Go 查询以成员身份作为实体类型的数据存储区。

在 html 页面中,显示所有数据但不显示键。

我尝试将 Key *datastore.Key 作为属性添加到 Membership 结构中,但仍然没有成功。

这是我的代码:

package hello

import (
"appengine"
"appengine/datastore"
"html/template"
"net/http"
"time"
)

type Membership struct {
Key *datastore.Key
Author string
Content string
FirstName string
LastName string
Address string
Email string
Grade string
Date time.Time
}

func init() {
http.HandleFunc("/", members)
}

func members(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
q := datastore.NewQuery("Membership").Order("-Date")
memberships := make([]Membership, 0, 10)
if _, err := q.GetAll(c, &memberships); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if err := membersTemplate.Execute(w, memberships); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}

var membersTemplate = template.Must(template.New("page").Parse(membersTemplateHTML))

const membersTemplateHTML = `
<html>
<body>
<table><tr><th>Key</th><th>Name</th><th>Email</th><th>Adress</th><th>Grade</th></tr>
{{range .}}
<tr>
<td>{{.Key}}</td>
<td>{{.FirstName}} {{.LastName}}</td>
<td>{{.Email}}</td>
<td>{{.Address}}</td>
<td>{{.Grade}}</td>
</tr>
{{end}}
</table>
</body>
</html>`

最佳答案

您需要将 key 分配给 Key 属性:

func members(w http.ResponseWriter, r *http.Request) {
....
if keys, err := q.GetAll(c, &memberships); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// Loop over the membership and add the keys
for i := range memberships {
memberships[i].Key = keys[i]
}
....
}

您可能还想禁用在数据存储中存储 Key 属性:

type Membership struct {
Key *datastore.Key `datastore:"-"`
....
}

顺便说一句。如果你想在 HTML 中显示 *datastore.Key,你应该 Encode()它之前。

关于google-app-engine - 添加 *datastore.Key 到 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14164678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com