RubyでGridFS:どのようにアップサートするには?
質問
んGridFS持っアップサート?
私はすでに存在するものと同じ_idで指定された_idを持つ画像、および1つを保存したい場合は、たとえば、私はそれを(更新)を上書きします。それ以外の場合は、それを挿入します。
解決
あなたが技術的に複数のドキュメントを修正していて、確かにトリッキーな競合状態が発生する可能性があるため、
はスペックは本当に、アップサートをサポートするように設計されていません。私たちはマットが最初にして入れて削除することである、何をしたかをお勧めしてます。
他のヒント
は、私はモンゴルビー宝石のソースコードを見て、これを見つけました
# Store a file in the file store. This method is designed only for writing new files;
# if you need to update a given file, first delete it using #Grid#delete.
# ...
def put(data, opts={})
だから、私はコードでこれをやった。
grid.delete(id) # if exists
grid.put(tmp_file.read, :_id => id, :content_type => file_type)
ここで働いシナトラスクリプトを参照してください。 http://github.com/acani/acani-sinatra/ブロブ/マスター/ acani.rb#L97 の
所属していません StackOverflow