2012-04-10 3 views
0

node.jsとグリッドを取得してniceを再生するのは簡単ではありません。私が試したすべての事のうち、私は限られた知識と、現在サポートされている機能が許すものと理解している限り、近いところでこれを解決しました。エラーなし - まだ書き込みなし

(コーヒーで下に、JSおよびその逆を取得するhttp://js2coffee.org/を使用)

util = require("util") 
mongodb = require("mongodb") 
GridStore = mongodb.GridStore 
parse = (options) -> 
    opts = {} 
    opts = options[0] if options.length > 0 
    opts.metadata = {} unless opts.metadata 
    opts 

db = new Db("local", new Server("127.0.0.1", 27017, 
    auto_reconnect: false 
    poolSize: 1 
), 
    native_parser: false 
) 
db.open() 
putFile = (path, name, options, fn) -> 
    options = parse(options) 
    options.metadata.filename = name 
    new GridStore(db, name, "w", options).open (err, file) -> 
    return fn(err) if err 
    file.writeFile path, (err, fn) -> 
     file.close() 

opts = content_type: "plain/text" 
myfileupload = putFile("myfile.txt", "known_hosts", opts) 
db.close() 

は不思議しかし、MongoDBの-10genのUbuntu 11.10にインストールapt-getを使用して、私のファイルが保存されません。そして理由を理解するのに役立つエラーメッセージはありません。

グリフとnodejについて読んだことはすべて残酷な冗談だと私は信じています。私は決してこの仕事を見るつもりはありません。助けてください。

+0

MongoDBのインストールに問題がある場合、私は同じ問題を抱えていましたが、この質問を参照してください。質問:http://stackoverflow.com/questions/10046101/installing-and-starting-mongodb-for-php-on- ubuntu-12-04 –

+0

ああ、インストールには問題ありません...私はそれを何千回もやりました。 ubuntuのパッケージ版で最も楽しいことがありましたが、あまりにも多くの矛盾した要素が出現していることがわかりました。私はあなたの投稿を見て - そしてコメントしました;-) –

答えて

2

非同期の問題が疑われます。 putFileを呼び出した直後にdb.close()に電話をかけているので、GridStoreopenコールバックが行われる前にdb.close()が実行されています。それが問題になるかもしれないようです。 db.close()file.close()と同じコールバックに移動してみてください。

+0

それを指摘していただきありがとうございます。 db.close()をfile.close()と同じコールバックに移動することは意味があります。私は同じコールバックでfile.close()の直後にdb.close()を置くので、私は別の問題があると思いますが、私はまだそれがエラーなしで保存されていないのを見ています。 (リモートのWindowsクライアントからC#を使って同じことをするので、私のMongoDBは問題になりません)。とにかくありがとう。 –

+0

"return file.writeFile(path、fn);"を使用して目的の結果を得ることができました。私がここで見つけた例によると:github.com/jamescarr/nodejs-mongodb-streaming –

+0

@OnesandZeroesどうしてこの問題を実際に解決しましたか?私はこれとほぼ一日戦っています。奇妙なことに、私のマングースログには、マングースが見つかったことがあります。 マングース:fs.files.find({filename: '81156f486d17269f524b4b313a808df7.jpg'}){readPreference: 'プライマリ'、w: 'majority'} マングース: fs.chunks.find({n:0、files_id:ObjectId( "54bb815b1b1bdbd2686f20b0")}){readPreference: 'primary'、w: 'majority'} 挿入の代わりに、私はwrittingしているので、 DBに。私は行方不明だと思いますか? – shanks

関連する問題