名称为 属性 的数据存储无效值类型
Datastore invalid value type for a Property with name
我正在尝试使用 GoLang 中的 属性List 将 int64 数组保存到 Datastore。
这是 属性 列表中的 属性:
但是,我收到此错误:
我知道您可以在 Datastore 中存储数组,尤其是基元数组。所以我不确定我在尝试通过 属性List 插入它时做错了什么。我的所有其他属性都得到了正确保存(它们只是单个基元)。数组导致此问题。
已解决!感谢 @mkopriva 的帮助。
如果要保存任何受支持的 Datastore 数据类型的数组,则必须将该数组的每个元素追加到新的 interface{}
数组中。
Value Field Documentation
我写了这个反射函数来处理 any 切片类型:
src := []int64{1, 2, 3, 4, 5}
value := reflect.ValueOf(src)
kind := value.Kind()
switch kind {
case reflect.Slice:
interfaceArr := make([]interface{},0)
for i := 0; i < value.Len(); i++ {
interfaceArr = append(interfaceArr, value.Index(i).Interface())
}
return interfaceArr
}
下面是数组 属性 在 属性 列表中的正确查找方式:
我正在尝试使用 GoLang 中的 属性List 将 int64 数组保存到 Datastore。
这是 属性 列表中的 属性:
但是,我收到此错误:
我知道您可以在 Datastore 中存储数组,尤其是基元数组。所以我不确定我在尝试通过 属性List 插入它时做错了什么。我的所有其他属性都得到了正确保存(它们只是单个基元)。数组导致此问题。
已解决!感谢 @mkopriva 的帮助。
如果要保存任何受支持的 Datastore 数据类型的数组,则必须将该数组的每个元素追加到新的 interface{}
数组中。
Value Field Documentation
我写了这个反射函数来处理 any 切片类型:
src := []int64{1, 2, 3, 4, 5}
value := reflect.ValueOf(src)
kind := value.Kind()
switch kind {
case reflect.Slice:
interfaceArr := make([]interface{},0)
for i := 0; i < value.Len(); i++ {
interfaceArr = append(interfaceArr, value.Index(i).Interface())
}
return interfaceArr
}
下面是数组 属性 在 属性 列表中的正确查找方式: