我正在使用以下代码在mongodb中创建一个文件。我没有错。但当我在我的Test
数据库中搜索时,没有看到上传的内容。我做错了什么?
var GridStrm = require('gridfs-stream');
console.log('Logo Upload');
var conn = mongoose.createConnection('localhost', 'Test', 27017);
var gfs = GridStrm(conn.db, mongoose.mongo);
var writeStream = gfs.createWriteStream('file.txt');
fs.createReadStream('d:\\somepath').pipe(writestream);
我收到错误Error: EISDIR, read
。
我收到了新的错误: -
events.js:72
throw er; // Unhandled 'error' event
^
Error: Cannot determine state of server
at canCheckoutReader
我进一步尝试了以下代码: -
req.pipe(gfs.createWriteStream({
filename: 'test'
}));
res.send("Success!");
但仍然没有结果。
答案 0 :(得分:1)
更简单的例子
var mongoose = require('mongoose');
var Grid = require('gridfs-stream');
var fs = require('fs');
var conn = mongoose.createConnection('localhost', 'test', 27017 );
conn.once('open', function() {
var gfs = Grid( conn.db, mongoose.mongo );
var source = fs.createReadStream('file.txt');
var target = gfs.createWriteStream({
filename: 'file.txt'
});
source.pipe(target);
});
这将收集到:
> db.fs.files.find()
{
"_id" : ObjectId("531470dc8b79087430b2e38d"),
"filename" : "file.txt",
"contentType" : "binary/octet-stream",
"length" : 138,
"chunkSize" : 262144,
"uploadDate" : ISODate("2014-03-03T12:09:00.896Z"),
"aliases" : null,
"metadata" : null,
"md5" : "87be58f21745384bcd13743bde9ae8fb"
}
所以你的问题是:
在所有gridFS方法中,文件名只是发送到服务器的标签。其他方法用于处理真实文件。因此,如果您仍然感到困惑,请尝试代码,然后更改此行:
var target = gfs.createWriteStream({
filename: 'dont-exist.txt'
});
将使用相同的文件内容,只需在服务器上添加新标签即可。