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

在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.

图片转代码服务由CSDN问答提供 功能建议

我正在尝试在mongo数据库中插入结构。

 类型SecretsStruct struct {
 UserID字符串`bson:“ userid” json:“ userid”`
 secretOne字符串`bson:“ secret_one” json:secret_one` 
  secretTwo字符串`bson:“ secret_two” json:secret_two` 
 secretThree字符串`bson:“ secret_three” json:secret_three` 
} 
 
func(c * SecretsStruct)SetSecrets(userId字符串,encryptedKeys 
 [] [] [] [] 字节){
 c.UserID = userId 
 c.secretOne = hex.EncodeToString(encryptedKeys [0])
 c.secretTwo = hex.EncodeToString(encryptedKeys [1])
 c.secretThree = hex.EncodeToString(  EncryptedKeys [2])
 log.Printf(“这是c%s”,c)
} 
 
g:= SecretsStruct {} 
 g.SetSecrets(userStruct.UserID,encryptionKeys)
 err =  secretCollection.Insert(g)
如果err!= nil {
 panic(err)
} 
   
 
 

我尝试插入与 机密,但无济于事。 填充到相应插入操作中的结果是:

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

另一方面,如果我尝试插入具有映射但没有struct的相同数据。

  secretCollection.Insert(bson.M {“ userid”:userStruct.UserID,
“ secret_one”:加密密钥[0],
“ secret_two”:加密密钥[1  ],
“ secret_three”:加密密钥[2]})
   
 
 

插入操作成功执行。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • duanbin4847 2018-08-24 14:35
    已采纳

    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`
    }
    
    点赞 打赏 评论

相关推荐 更多相似问题