2017-11-20 60 views
0

非常に新しくなっているので、私はmgoを使用するのに苦労しています。 は、私はこのようなファイルを取得するために酸化マグネシウムを使用しています:mgoのGridFileからIdの文字列値を抽出する

gridfs := db.GridFS("fs") 
allFiles := gridfs.Find(nil).Iter() 

をそして私は、私は文字列としてf.Idを()を使用して開始したい

 var f *mgo.GridFile 
     for gridfs.OpenNext(allFiles, &f) { 

      //use f.Id() 
     } 

のような返されたイテレータを使用しますが、私はできないのです変換する。私が見つけた方法の一つは、ちょうど私がコンパイルできますが、メッセージinterface conversion: interface {} is bson.ObjectId, not bson.ObjectId

は既にこの上に多くの時間を過ごして、実行時に失敗しfileId := (f.Id().(bson.ObjectId)).Hex()を使用することによって、私は間違いなく私がファイルであればフェッチ方法を変更することに開いていました。 GridFileを使用して変換できません。 私はこれに助けていただきありがとうございます。ありがとう。

+1

あなたのプロジェクトに複数のバージョンの 'mgo'があるかもしれません。あなたはあなたの輸入品をチェックしてポストすることができますか? 'mgo'のバージョンが複数ある場合は、Goのワークスペースを確認してください。 – icza

+0

@iczaそれだった。あまりにも多くの時間を費やしているので、迷惑を感じる。あなたの助けに感謝します。これを返信としてマークします –

答えて

0

@iczaによる正解。私は2つのバージョンのmgoを持っていました。

+0

この質問を「未回答」リストに表示させないように、この回答を受け入れるのは自由です。 –

関連する問題