没有错误 - 仍然没有写

时间:2012-04-10 18:17:26

标签: node.js mongodb coffeescript ubuntu-11.10 gridfs

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

奇怪的是,在Ubuntu 11.10上使用apt-get install mongodb-10gen,我的文件没有保存。并且没有错误消息可以帮助我理解原因。

我几乎相信我读到的关于gridfs和nodejs的所有内容都只是一个残酷的笑话,我永远不会看到这个工作。请帮忙。

1 个答案:

答案 0 :(得分:2)

我怀疑是一个异步问题。您在致电db.close()后立即致电putFile,因此db.close()GridStore的{​​{1}}回拨开始之前正在运行,对?好像这可能是一个问题。尝试将open移动到与db.close()相同的回调中。