关于this question,我尝试将表单中的数据存储键值转换为int64,并在该键值的帮助下更新数据存储区中的记录。我尝试了与参考链接中选择的答案完全相同的代码,但得到了一个错误,显示为Unable to parse key. strconv.ParseInt: parsing "/Users,6248007768440574": invalid syntax
我从表单传递的值是一个/Users,6248007768440574
格式的数据存储键。我意识到语法错误就是因为这个原因。有人能帮我解决这个问题吗?或者,是否有将字符串转换为*datastore.Key的方法?任何帮助我们都将不胜感激。
发布于 2019-06-24 08:55:21
因为字符串"/Users,6248007768440574"
不是整数,所以ParseInt会返回错误。子字符串是一个整数,但不是整个字符串。
问题中的字符串是通过调用Key.String创建的。数据存储包不提供解析此方法的输出的方法。下面是一个简单的解析器,用于处理没有祖先键的情况:
var keyPat = regexp.MustCompile(`^/([^\.]*),(\d+)$`)
func parseKey(s string) (*datastore.Key, error) {
m := keyPat.FindStringSubmatch(s)
i := strings.Index(s, ",")
if i < 0 {
return nil, errors.New("bad format")
}
n, err := strconv.ParseInt(m[2], 10, 64)
if err != nil {
return nil, err
}
return datastore.IDKey(m[1], n, nil), nil
}
https://stackoverflow.com/questions/56728338
复制相似问题