【问题标题】:No errors - still no write没有错误 - 仍然没有写入
【发布时间】:2012-04-23 01:34:24
【问题描述】:

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

【问题讨论】:

  • 如果您在安装 MongoDB 时遇到问题,我也遇到了同样的问题,看到我问了这个问题:stackoverflow.com/questions/10046101/…
  • 哦,安装没问题...我已经做了一千次了。用 ubuntu 打包版玩得最开心,但我发现出现了太多矛盾的元素,我想知道他们为什么还要费心打包它。我看了你的帖子 - 也发表了评论;-)

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


【解决方案1】:

我怀疑存在异步问题。您在调用putFile 之后立即调用db.close(),所以db.close()GridStoreopen 回调触发之前运行,对吗?似乎这可能是一个问题。尝试将db.close() 移动到与file.close() 相同的回调中。

【讨论】:

  • 感谢您指出这一点。将 db.close() 移动到与 file.close() 相同的回调中确实有意义。但是,我认为我还有另一个问题,因为我将 db.close() 紧跟在同一个回调中的 file.close() 之后,但我仍然看到它运行时没有错误并且没有保存。 (从远程 Windows 客户端使用 C# 做同样的事情,所以问题不是我的 MongoDB)。还是谢谢。
  • 我能够通过使用“return file.writeFile(path, fn);”得到想要的结果根据我在这里找到的示例:github.com/jamescarr/nodejs-mongodb-streaming
  • @OnesandZeroes 你是如何真正解决这个问题的?我已经为此奋斗了将近一天。奇怪的是,在我的 mongoose 日志中,我看到 mongoose 正在查找 Mongoose:fs.files.find({ filename: '81156f486d17269f524b4b313a808df7.jpg' }) { readPreference: 'primary', w: 'majority' } Mongoose: fs.chunks .find({ n: 0, files_id: ObjectId("54bb815b1b1bdbd2686f20b0") }) { readPreference: 'primary', w: 'majority' } 而不是插入,因为我正在写入数据库。你觉得我错过了什么
猜你喜欢
  • 1970-01-01
  • 2016-05-27
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-14
  • 1970-01-01
  • 2019-08-31
相关资源
最近更新 更多