当前位置: 首页 > 面试题库 >

Golang GAE-胡子的结构中的intID

皮景龙
2023-03-14
问题内容

这是该应用程序的示例。基本代码位于:golang-code / handler / handler.go(在主题之后应显示ID!)

我试图在Google Appengine上的Golang中建立一个小型博客系统,并使用Mustache作为模板引擎。

所以,我有一个结构:

type Blogposts struct {
    PostTitle   string
    PostPreview string
    Content     string
    Creator     string
    Date        time.Time
}

数据通过传递给GAE

    datastore.Put(c, datastore.NewIncompleteKey(c, "Blogposts", nil), &blogposts)

因此,GAE自动分配一个intID(int64)。现在我试图获得最新的博客文章

// Get the latest blogposts
c := appengine.NewContext(r)
q := datastore.NewQuery("Blogposts").Order("-Date").Limit(10)

var blogposts []Blogposts
_, err := q.GetAll(c, &blogposts)

直到那里一切正常,但是当我尝试访问intID(或stringID,无论如何)时,我无权访问此:-(

<h3><a href="/blog/read/{{{intID}}}">{{{PostTitle}}}</a></h3>

(PostTitle起作用,intID不起作用,我已经尝试了数千种东西,没有任何作用:-()

有人知道吗?太好了!

编辑:我用胡子。

http://mustache.github.com/

在代码中,我使用:

x["Blogposts"] = blogposts
data := mustache.RenderFile("templates/about.mustache", x)
sendData(w, data) // Equivalent to fmt.Fprintf

然后可以使用{{{Content}}}或{{{PostTitle}}}等在.mustache模板中访问数据。


问题答案:

intID 是Key的内部属性,而不是struct,可以通过getter访问:

id := key.IntID()

GetAll返回[]*Key,您没有使用它:

_, err := q.GetAll(c, &blogposts)

解决此问题的一种方法是创建一个既包含帖子信息又包含关键信息的viewmodel结构(未经测试,但这是要点):

  //... handler code ...

  keys, err := q.GetAll(c, &blogposts)
  if err != nil {
    http.Error(w, "Problem fetching posts.", http.StatusInternalServerError)
    return
  }

  models := make([]BlogPostVM, len(blogposts))
  for i := 0; i < len(blogposts); i++ {
    models[i].Id = keys[i].IntID()
    models[i].Title = blogposts[i].Title
    models[i].Content = blogposts[i].Content
  }

  //... render with mustache ...
}

type BlogPostVM struct {
  Id int
  Title string
  Content string
}


 类似资料:
  • NowCoder 题目描述 解题思路 // java public boolean HasSubtree(TreeNode root1, TreeNode root2) { if (root1 == null || root2 == null) return false; return isSubtreeWithRoot(root1, root2) || HasSu

  • 一、题目 输入两棵二叉树A 和B,判断B 是不是A 的子结构。 二、解题思路 要查找树A 中是否存在和树B 结构一样的子树,我们可以分成两步: 第一步在树A 中找到和B 的根结点的值一样的结点R, 第二步再判断树A 中以R 为根结点的子树是不是包含和树B 一样的结构。 三、解题代码 public class Test { /** * 二叉树的树结点 */ pub

  • 谁能给我解释一下这个吗?

  • 本文向大家介绍Fortran中的结构,包括了Fortran中的结构的使用技巧和注意事项,需要的朋友参考一下 示例 该bind属性还可以应用于派生类型: 鹅 鹅90 现在可以在goose_c和之间传输数据goose_f。Goose可以从Fortran中使用调用带有类型参数的C例程type(goose_t)。

  • 我试图更全面地了解动态规划中最优子结构属性的使用,但我对为什么我们必须证明问题的任何最优解都包含子问题的最优解视而不见。 难道仅仅证明问题的某些最优解决方案具有这个属性,然后用它来论证由于我们的递归算法构建的解决方案至少与最优解决方案一样好,它本身将是最优的,这还不够吗?换句话说,我未能发现在我们的算法的正确性参数中,我们需要所有最优解都包含子问题的最优解。 要澄清: 最佳子结构的CLRS定义说,

  • 有一个死胡同,宽度刚好只能让一辆汽车通过,偏偏老有汽车开到死胡同来,这下麻烦了,最先开来的汽车要最后才能倒退出去。给定一个汽车开来的序列和一个可能的倒车出去的序列,请判断汽车能否都倒退出去,若能则输出Yes,否则输出No。 输入格式: 首先输入一个整数T,表示测试数据的组数,然后是T组测试数据。每组测试数据首先输入一个正整数n(n≤10),代表开来的汽车数,然后输入2n个整数,其中,前n个整数表示