0

node.jsとgridfsをうまく再生するのは簡単ではありません。私が試したすべてのことの中で、私はこれが限られた知識で得ることができる限り近くにあり、現在サポートされている機能が可能になることを理解していることに決めました。

(以下のコーヒーでは、http://js2coffee.org/を使用してjsにアクセスし、その逆も同様です)

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()

しかし、不思議なことに、Ubuntu11.10でapt-getinstall mongodb-10genを使用すると、ファイルが保存されません。そして、その理由を理解するのに役立つエラーメッセージはありません。

私がgridfsとnodejsについて読んだものはすべて、ただの残酷な冗談であり、この作品を見ることは決してないだろうと私は信じています。助けてください。

4

1 に答える 1

2

非同期の問題が疑われます。の呼び出しdb.close()の直後に呼び出してputFileいるので、コールバックが発生db.close()する前に実行されていますか?問題になる可能性があるようです。と同じコールバックに移動してみてください。GridStoreopendb.close()file.close()

于 2012-04-10T19:11:42.213 に答える