29

ユーザーが選択したファイルをMongoDBに保存したい。ファイルをMongoDBに追加するために、ファイルをBSONオブジェクトに正しく追加するにはどうすればよいですか?私のアプローチが正しくない場合は、正しい方向を指してください。

以下はクライアントコードです。このjQuery関数は、すべての入力フィールドでテキスト(ファイル部分のヘルプが必要)を収集し、BSONオブジェクトとしてサーバーに送信します。

$('#add').click(function()
            {
                console.log('Creating JSON object...');
                var classCode = $('#classCode').val();
                var professor = $('#professor').val();
                var description = $('#description').val();
                var file = $('#file').val();

                var document = 
                {
                    'classCode':classCode,
                    'professor':professor,
                    'description':description,
                    'file':file,
                    'dateUploaded':new Date(),
                    'rating':0 
                };
                console.log('Adding document.');
                socket.emit('addDocument', document);
            });

フォームのHTML:

   <form>
        <input type = 'text' placeholder = 'Class code' id = 'classCode'/>
        <input type = 'text' placeholder = 'Document description' id = 'description'/>
        <input type = 'text' placeholder = 'Professor' id = 'professor'/>
        <input type = 'file' id = 'file'/>
        <input type = 'submit' id = 'add'/>
    </form>

CoffeeScriptのサーバー側コード:

#Uploads a document to the server. documentData is sent via javascript from submit.html
            socket.on 'addDocument', (documentData) ->
                console.log 'Adding document: ' + documentData
                db.collection 'documents', (err, collection) ->
                    collection.insert documentData, safe:false
                    return
4

3 に答える 3

45

ファイルが十分に小さい場合(16 メガバイト未満)、GridFS の複雑さを追加する代わりに、ファイルを BSON ドキュメントに埋め込むことができます。

BSON には、任意のドライバーがアクセスを提供する必要があるバイナリ データ型があります。

ファイルがテキスト ファイルの場合は、UTF8 文字列として保存できます。

于 2012-12-17T23:05:05.910 に答える
20

MongoDB にファイルを保存するには、GridFSを使用してみてください。
GridFS の操作に関するいくつかのチュートリアルを見つけることができます ( example )。
MongoDB ドライバーの API を確認し、プロジェクトに実装してみてください

于 2012-12-17T02:47:54.340 に答える