让 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 的一切都只是一个残酷的笑话,我永远不会看到这项工作。请帮忙。