2017-02-22 61 views
0

Я пытаюсь упорядочить структуру в JSON, а затем вставить ее в мою базу данных Mongo, но продолжаю получать эту ошибку: %!(EXTRA main.Test={575590180 Me}). Что я делаю неправильно? Я взял этот код именно из другого .. проект, который я работал, на котором можно было вставлять документы без каких-либо проблемGolang Mongodb%! (EXTRA

package main 

import (
    "utils" 
    "hash/fnv" 
    "log" 
    "gopkg.in/mgo.v2" 
    "encoding/json" 
) 

type Test struct { 
    Id uint32 
    Name string 
} 

func ConnectDB() *mgo.Session { 
    session, err := mgo.Dial("localhost:27017") 
    if err != nil { 
     panic(err) 
    } 
    return session 
} 

func SaveMgoDoc(dbName string, collectionName string, file Test) bool { 
    session, err := mgo.Dial("localhost:27017") 

    if err != nil { 
     panic(err) 
    } 

    defer session.Close() 

    fileJson, err := json.Marshal(file) 

    if err != nil { 
     log.Printf("failed to marshal struct to json...\n", file) 
     return false 
    } 

    collection := session.DB(dbName).C(collectionName) 
    err   = collection.Insert(&fileJson) 

    if err != nil { 
     log.Printf("failed to insert doc into database...\n", file) 
     return false 
    } 

    return true 
} 

func hash(s string) uint32 { 
     h := fnv.New32a() 
     h.Write([]byte(s)) 
     return h.Sum32() 
} 

func main() { 
    utils.SaveMgoDoc("mydb", "mydoc", Test{hash("Me"), "Me"}) 
} 
+0

@old_mountain Это Работает. Извините за тупой вопрос. Я предположил, что все объекты m ust быть JSON для вставки в MongoDB. Благодаря! – Soubriquet

ответ

2

Insert ожидает указатель на структуру, а не json строка Таким образом, в данном случае, просто используйте:

err = collection.Insert(&file)