我有以下使用 node-mongodb-native 的代码(删除了错误检查以保持简洁)。
var mongo = require('mongodb').MongoClient;
var grid = require('mongodb').GridStore;
var url = 'mongodb://localhost:27017/mydatabase';
mongo.connect(url, function(err, db) {
var gs = new grid(db, 'myfile.txt', 'w', {
"metadata": {
// metadata here
}
});
gs.open(function(err, store) {
gs.writeFile('~/myfile.txt', function(err, doc) {
fs.unlink(req.files.save.path, function (err) {
// error checking etc
});
}
});
});
如果我运行它一次它工作正常并将文件存储在 GridFS 中。
现在,如果我在我的系统上删除该文件并创建一个具有相同名称但内容不同的新文件,然后再次通过该代码运行它,它会上传它。但是,它似乎覆盖了已经存储在 GridFS 中的文件。_id
保持不变,但md5
已更新为新值。因此,即使文件不同,因为名称相同,它也会覆盖 GridFS 中的当前文件。
有没有办法上传两个同名文件?如果_id
是唯一的,为什么驱动程序仅根据文件名覆盖文件?
我在 GitHub 上发现了一个类似的问题,但我使用的是最新版本的驱动程序npm
,它完成了我上面解释的操作。