在Golang中的mongodb中插入struct

我正在尝试在mongo数据库中插入结构。 </ p>

 类型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)
}
</ code> </ pre>

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

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

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

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

插入操作成功执行。</ p>
</ div>

展开原文

原文

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个回答



您必须导出您的struct字段,以便另一个包(在这种情况下为mgo)可以访问它们:</ p>

 类型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
}
</ code> </ pre>
</ div>

展开原文

原文

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`
}

dongyong1942
dongyong1942 别客气。 如果这真的有帮助,我很乐意接受;)
大约 2 年之前 回复
douli1854
douli1854 我愚蠢的错误..谢谢。
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐