当我尝试用任何字母更新 JSONB 中的归档时出现错误,但如果我用数字更新相同的归档,它的工作就完美了。sql:转换 Exec 参数 $2 类型:无效字符 'b' 寻找值的开头。插入类型示例:params["imei_json"] = types.JSONText(params["imei"].(string))
//Update User Information
func (metadata *accountPhoneNumberMetadata) UpdateUserInfo(params map[string]interface{}) error {
params["imei_json"] = types.JSONText(params["imei"].(string))
params["device_unique_id_json"] = types.JSONText(params["device_unique_id"].(string))
tx := metadata.client.MustBegin()
if _, err := tx.NamedExec(metadata.sqlMetadataUpdate(), params); err != nil {
tx.Rollback()
return err
}
if _, err := tx.NamedExec(metadata.sqlPhoneNumbers(), params); err != nil {
tx.Rollback()
return err
}
if _, err := tx.NamedExec(metadata.sqlUpdateRegistrationMetadata(), params); err != nil {
tx.Rollback()
return err
}
if err := tx.Commit(); err != nil {
tx.Rollback()
return err
}
return nil
}
func (metadata *accountPhoneNumberMetadata) sqlUpdateRegistrationMetadata() string {
return `UPDATE registrations.metadata
SET
metadata =
jsonb_set(jsonb_set(metadata, '{react_native_imei, device_imei}', :imei_json),
'{react_native_device_info, device_unique_id}', :device_unique_id_json )
WHERE
metadata_id = (SELECT metadata_id FROM registrations.metadata WHERE registration_id = :registration_id LIMIT 1)`
}