dtiu94034
dtiu94034
采纳率0%
2018-08-24 14:18

在Golang中的mongodb中插入struct

已采纳

I am trying to insert a struct in mongo database.

type SecretsStruct struct {
   UserID string `bson:"userid" json:"userid"`
   secretOne string `bson:"secret_one" json:secret_one`
   secretTwo string `bson:"secret_two" json:secret_two`
   secretThree string `bson:"secret_three" json:secret_three`
 }

func (c *SecretsStruct) SetSecrets(userId string, encryptedKeys   
      [][]byte){
   c.UserID = userId
   c.secretOne = hex.EncodeToString(encryptedKeys[0])
   c.secretTwo = hex.EncodeToString(encryptedKeys[1])
   c.secretThree = hex.EncodeToString(encryptedKeys[2])
   log.Printf("This is the c %s", c)
 }

 g := SecretsStruct{}
 g.SetSecrets(userStruct.UserID, encryptedKeys)
 err = secretCollection.Insert(g)
 if err != nil {
      panic(err)
  }

I have tried inserting the byte arrays corresponding to the secrets but of no help. The result which gets populated to the corresponding insertion operation is :

{'_id': ObjectId('5b80117c118c660aaa0c87c2'),
'userid': 'eb19d220-ef13-43aa-8a7f-f78637718000'}

On the other hand, if I try to insert same data with a map but without struct.

secretCollection.Insert(bson.M{"userid": userStruct.UserID,
    "secret_one": encryptedKeys[0],
    "secret_two": encryptedKeys[1],
    "secret_three": encryptedKeys[2]})

The insertion operation executes successfully.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • duanbin4847 duanbin4847 3年前

    You have to export your struct fields, so that another package (in this case mgo) can access them:

    type SecretsStruct struct {
        UserID string `bson:"userid" json:"userid"`
        SecretOne string `bson:"secret_one" json:secret_one`
        SecretTwo string `bson:"secret_two" json:secret_two`
        SecretThree string `bson:"secret_three" json:secret_three`
    }
    
    点赞 评论 复制链接分享

相关推荐