@gogolang

Страница 1048 из 1630
Nibbler
07.05.2018
07:44:34
gopkg.in/mgo.v2 - проблему накопал, передаю пустой интерфейс, а преобразование не делаю в структуру, теперь думаю как решить эту проблему. Есть вариант Сделать какой-то единый interface и работать с ним

tsov
07.05.2018
07:48:43
обрати внимание, что имена полей в базе получаются как lowercase к именам структуры го, если не указал тэг bson со своим именем

Google
tsov
07.05.2018
07:50:16
нет, не обязательно

Nibbler
07.05.2018
07:50:30
ага видел. Обращал. ДУмал, что можно как-то сделать один метод, через который сохранять можно было бы.

tsov
07.05.2018
07:51:01
он принимает пустой интерфейс и разгребает его (докапывается до исходного значения) через рефлексию

Nibbler
07.05.2018
07:51:40
ну у меня сейчас:

BSON field 'insert.documents.0' is the wrong type 'array', expected type 'object'

tsov
07.05.2018
07:53:27
а ну ты слайс передал похоже

хотя не, там что то другое

покажи весь код

Nibbler
07.05.2018
07:54:14
ну получил json decode

потом …interface{} на save

tsov
07.05.2018
07:55:00
куда json decode? в intrrface{}? тогда там мапа будет

Nibbler
07.05.2018
07:55:33
item := model.ItemWrapper{} err := decoder.Decode(&item) err = mgo.Insert(&item.Data) Insert(object ...interface{}) err = collection.Insert(*item)

Google
Nibbler
07.05.2018
07:55:38
сокращенно

tsov
07.05.2018
07:58:24
mgo.Insert это что?

базу создаешь?

3 и 4 строки не понял

Nibbler
07.05.2018
07:58:51
3 отправляю в метод схохранить в mongo

tsov
07.05.2018
07:59:06
в 5й надо collection.Insert(&item)

Nibbler
07.05.2018
07:59:07
4 в монге сохранение

tsov
07.05.2018
07:59:43
3 отправляю в метод схохранить в mongo
а куда? это какая коллекция?

Nibbler
07.05.2018
08:00:26
// get object for add to collection item := &object // get session and collection session, collection, err := c.urlCollection() // check errors if err != nil { return err } // set data to collection err = collection.Insert(&item) // check errors if err != nil { fmt.Println(err.Error()) return err } // close session thred defer session.Close() return nil

весь метод

tsov
07.05.2018
08:02:14
по идее надо так: mgo.DB("database").Clone().Collection("coll").Insert(&item)

Nibbler
07.05.2018
08:02:43
urlCollection

// copy mongo session session = c.session.Copy() urlCollection = session.DB(DATABASE).C(COLLECTION)

collection.Insert(&item)

session.DB(DATABASE).C(COLLECTION).Insert(&item)

вся строка получается

tsov
07.05.2018
08:04:20
ну да все верно

Nibbler
07.05.2018
08:04:37
ага.

поменял с * на & ошибок нет и сохранения нет

tsov
07.05.2018
08:05:00
item может быть interface{}, тогда просто Insert(item)

Google
Nibbler
07.05.2018
08:05:05
даже bson

tsov
07.05.2018
08:05:38
чем проверяешь? смотри тулзой что лежит в базе

Nibbler
07.05.2018
08:06:06
тулзой смотрю

goland дебаггер

error = {error}

и все

Eugene
07.05.2018
08:06:37
В базе точно нету?

tsov
07.05.2018
08:06:42
не, я про содержимое базы

какой там док упал

в нее

в коллекцию

Nibbler
07.05.2018
08:07:07
даже коллекции нет

Nibbler
07.05.2018
08:07:35
до …interface{} работало. Создавало коллекцию если ее нет, решил порефачить.

tsov
07.05.2018
08:08:04
interface{} передай без &

Nibbler
07.05.2018
08:08:16
уже

mgo.Insert(&item.Data) - или про это?

без &

tsov
07.05.2018
08:10:12
mgo.Insert(&item.Data) - или про это?
не, я про тот collection.insert. эту строку я у тебя так и ге понял нафига она

Pawel
07.05.2018
08:13:42
ql как замена sqlite нормальная, помедленней, но нативна.
ага, инструментов ни каких, sql запускать из консоли или писать к ней свой гуй. нафиг нафиг эту маргинальщину

пусть сделают драйвер jdbc чтобы в goland можно было её вертеть, тогда посмотрим на неё

Google
Nibbler
07.05.2018
08:16:50
не, я про тот collection.insert. эту строку я у тебя так и ге понял нафига она
у меня отдельная структура mgo и у нее методы уже

там идет сохранение

err = collection.Insert(item) - тут убрал

Alexey
07.05.2018
08:19:23
есть tidb cockroachdb совместимы с драйвервами mysql и postgres соответственно

Denis
07.05.2018
08:23:11
у меня отдельная структура mgo и у нее методы уже
покажи структуру Item, что ты там написал. bson-тэги указал же?

Nibbler
07.05.2018
08:23:17
lf

да

Admin
ERROR: S client not available

Nibbler
07.05.2018
08:23:21
5 минут

Denis
07.05.2018
08:23:35
еще в col.Insert можно передать bson.M{ "key": item.Key }

Nibbler
07.05.2018
08:27:43
отправляю в  mgo: &{ObjectIdHex("") true ads aa} BSON field 'insert.documents.0' is the wrong type 'array', expected type 'object'

ошибка таже

{ "data": { "schemeId" : "181", "components" : [ { "id":"181", "ids" : [ { "id": 10 } ], "satCondition" : "sat", "condition" : [ { "params" : { "comment" : "ololo", "compare" : "djdj" }, "leftCompare" : { "select" : "asd", "param" : 10 }, "rightCompare" : { "select" : "asd", "param" : 10 } } ] } ] } }

Denis
07.05.2018
08:28:56
отправляю в  mgo: &{ObjectIdHex("") true ads aa} BSON field 'insert.documents.0' is the wrong type 'array', expected type 'object'
ммм, ошибка странная, но проблема точно есть в том что ObjectIdHex("")

Nibbler
07.05.2018
08:29:01
type DataComponents struct { Data SchemeParams json:"data" } type SchemeParams struct { Id bson.ObjectId json:"id" bson:"_id,omitempty" SchemeId string json:"schemeId" bson:"schemeId" Components []Component json:"components" bson:"components" } // Component structure type Component struct { Id string json:"id" bson:"id" Ids []Ids json:"ids" bson:"ids" SatCondition string json:"satCondition" bson:"staCondition" Condition []Condition json:"condition" bson:"condition" } // number of blocks type Ids struct { Id int json:"id" bson:"id" } // condition block type Condition struct { CondBody []CondBody json:"conditionBody" bson:"conditionBody" } // condition body struct type CondBody struct { Params Parametrs json:"params" bson:"params" LeftCompare Compare json:"leftCompare" bson:"leftCompare" RightCompare Compare json:"rightCompare" bson:"rightCompare" } //params block of condition type Parametrs struct { Comment string json:"comment" bson:"comment" Comp string json:"compare" bson:"compare" } // compare block of condition type Compare struct { Select string json:"select" bson:"select" Param int json:"param" bson:"param" }

Denis
07.05.2018
08:29:20
это ведь монговский ObjectID

?

Google
Denis
07.05.2018
08:29:50
ты должен либо сгенерить айди у себя и передавать его монге

Nibbler
07.05.2018
08:29:51
а не надо ли его генерить вот в чем вопрос. Я что-то подобное делал сейас в другом месте гляну

Denis
07.05.2018
08:29:57
или вообще не передавать и позволить монге генерить

а ты передаешь вместо айдишника пустую строку. но почему сообщение об ошибке такое не знаю, странно

Nibbler
07.05.2018
08:30:24
ну закомментим да проверим

не-а ну пишет, что приходит массив, а ожидается объект

Denis
07.05.2018
08:38:35
надо весь код смотреть, чето запутанное. залей на https://play.golang.org/

и модели и как ее инициализируешь и как сохраняешь

Nibbler
07.05.2018
08:38:57
а у нас же slice пришел

Denis
07.05.2018
08:39:16
в Insert можно и слайс передать вроде как

Nibbler
07.05.2018
08:39:18
так ака …interface{} это просто набор данныхъ

в виде слайса насколько помню

и надо преобразование делать в стрктуру

Denis
07.05.2018
08:39:37
чтобы сразу вставить много данных

tsov
07.05.2018
08:39:41
ну там в монге документ это документ, а не массив

Nibbler
07.05.2018
08:40:02
ага.

он так и говорит.

tsov
07.05.2018
08:40:09
Nibbler
07.05.2018
08:40:34
в виде мапы
надо еще раз перечитать. Спорить не буду поверю так.

tsov
07.05.2018
08:40:37
у тебя item должен успешно каститься в мапу или структуру

Страница 1048 из 1630