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

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

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

4

1 回答 1

2

我怀疑是异步问题。您在db.close()调用 to 之后立即调用putFile,所以在的回调触发db.close()之前运行,对吗?似乎这可能是一个问题。尝试进入与.GridStoreopendb.close()file.close()

于 2012-04-10T19:11:42.213 回答