数据存储无效的值类型,属性名称为

huangapple go评论86阅读模式
英文:

Datastore invalid value type for a Property with name

问题

我正在尝试使用GoLang中的PropertyList将int64数组保存到Datastore。

这是PropertyList中的Property:
数据存储无效的值类型,属性名称为

然而,我遇到了这个错误:
数据存储无效的值类型,属性名称为

我知道你可以在Datastore中存储数组,尤其是原始类型的数组。所以我不确定在尝试通过PropertyList插入时出了什么问题。我的其他属性都能正确保存(它们只是单个的原始类型)。这个数组导致了这个问题。

英文:

I am trying to save an int64 array to Datastore using a PropertyList in GoLang.

Here is the Property in the PropertyList:
数据存储无效的值类型,属性名称为

However, I get this error:
数据存储无效的值类型,属性名称为

I know you can store arrays in Datastore, especially of primitives. So I'm not sure what I'm doing wrong, when trying to insert it via PropertyList. All my other properties get saved properly (they are just single primitives). The array is causing this issue.

答案1

得分: 5

解决了!感谢@mkopriva的帮助。

如果你想保存任何支持的Datastore数据类型的数组,你必须将该数组的每个元素追加到一个新的interface{}数组中。
Value字段文档

我编写了这个反射函数来处理任何切片类型:

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
}

下面是属性列表中数组属性的正确表示方式:
数据存储无效的值类型,属性名称为

英文:

Solved! Thanks to @mkopriva for the help.

If you want to save an array of any supported Datastore data type, you must append each element of that array into a new interface{} array.
Value Field Documentation

I wrote this reflect function to work with any slice type:

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 &lt; value.Len(); i++ {
		interfaceArr = append(interfaceArr, value.Index(i).Interface())
	}
	return interfaceArr
}

Here is the correct way an Array Property should look in a Property List:
数据存储无效的值类型,属性名称为

huangapple
  • 本文由 发表于 2022年1月7日 01:30:32
  • 转载请务必保留本文链接:https://go.coder-hub.com/70611148.html
  • arrays
  • go
  • google-cloud-datastore
  • google-cloud-platform
  • properties
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定