[英]Cannot pass []datastore.PropertyList to GetMulti function (datastore: src has invalid type)
[英]Why do I get "invalid entity type" with datastore.Put using a datastore.PropertyList in a Go AppEngine aetest?
此测试失败, partnermerge_test.go:22: datastore: invalid entity type
package bigdipper
import (
"testing"
"appengine/aetest"
"appengine/datastore"
)
func TestCreateMigrationProposal(t *testing.T) {
c, err := aetest.NewContext(nil)
if err != nil {
t.Fatal(err)
}
defer c.Close()
if _, err := datastore.Put(
c,
datastore.NewKey(c, "ORDER", "order-id-1", 0, nil),
datastore.PropertyList{}); err != nil {
t.Fatal(err)
}
}
Put 将实体 src 保存到键为 k 的数据存储中。 src 必须是结构指针或实现 PropertyLoadSaver; 如果是结构指针,则将跳过该结构的任何未导出的字段。 如果 k 是不完整的键,则返回的键将是数据存储生成的唯一键。
当尝试将它与 PropertyList 作为src
一起使用时,这有点令人困惑。 PropertyList 不实现 PropertyLoadSaver,但 *PropertyList 实现。 在 PropertyList 之前添加 & 以获取指向它的指针可修复此测试。
package bigdipper
import (
"testing"
"appengine/aetest"
"appengine/datastore"
)
func TestCreateMigrationProposal(t *testing.T) {
c, err := aetest.NewContext(nil)
if err != nil {
t.Fatal(err)
}
defer c.Close()
if _, err := datastore.Put(
c,
datastore.NewKey(c, "ORDER", "order-id-1", 0, nil),
&datastore.PropertyList{}); err != nil {
t.Fatal(err)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.