Open ghasemikasra39 opened 6 years ago
Hello.
I also get the same error
Error: missing db argument new Grid(db, mongo)
Then if I replace with ``javascript const conn = mongoose.connection
var Grid = require('gridfs-stream'); Grid.mongo = mongoose.mongo const gfs = Grid(conn) ``
Then I get
"TypeError: Cannot read property \'readPreference\' of null
I am using :
Best regards,
Arn
my experience is i was using gridfs-stream with multer-gridfs-storage for some reason mongoose:"^5.0" has issues with gridfs-stream when making connections and when i managed to make the connections multer-gridfs-stroage failed. so whatI resorted to was to use two mongoose versions in my application. At the end of the day i had different connections one to my GridFS and another to my mongoDatabase ; therefor i went on to use V5.0 for my mongodb and v4. for my GridFS. on how to install same packages of different version follow this https://gist.github.com/mnpenner/c46a5eff34cfa91f361a8b3baa249a10
Hey I have the same issue ... Any solution found ? I would like to avoid @deresegetachew 's one ;)
Hey I have the same issue ... Any solution found ?
Any solutions ?
for reference i have encountered this. two difference instances of this happened with my code --
modified my connection code --> const conn = mongoose.createConnection('your URI'); var gfs; conn.once('open', () => { gfs = Grid(conn.db, mongoose.mongo); }) from const conn = mongoose.connection(...)
"express": "^4.16.4", "gridfs-stream": "^1.1.1", "mongoose": "^5.4.5",
mongo DB v4.02
Good luck
Refer to here: https://github.com/aheckmann/gridfs-stream/issues/56
Using the db
object instead of the connection
resolved my issue.
So instead of this:
var gfs;
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log("Connected!")
var mongoDriver = mongoose.mongo;
gfs = new Gridfs(db, mongoDriver);
});
To this
var gfs;
var connection = mongoose.connection;
connection.on('error', console.error.bind(console, 'connection error:'));
connection.once('open', function() {
console.log("Connected!")
var mongoDriver = mongoose.mongo;
gfs = new Gridfs(connection.db, mongoDriver);
});
Refer to here: #56
Using the
db
object instead of theconnection
resolved my issue. So instead of this:var gfs; var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { console.log("Connected!") var mongoDriver = mongoose.mongo; gfs = new Gridfs(db, mongoDriver); });
To this
var gfs; var connection = mongoose.connection; connection.on('error', console.error.bind(console, 'connection error:')); connection.once('open', function() { console.log("Connected!") var mongoDriver = mongoose.mongo; gfs = new Gridfs(connection.db, mongoDriver); });
Thanks @kuzdogan This resolved my issue .
Refer to here: #56
Using the
db
object instead of theconnection
resolved my issue. So instead of this:var gfs; var db = mongoose.connection; db.on('error', console.error.bind(console, 'connection error:')); db.once('open', function() { console.log("Connected!") var mongoDriver = mongoose.mongo; gfs = new Gridfs(db, mongoDriver); });
To this
var gfs; var connection = mongoose.connection; connection.on('error', console.error.bind(console, 'connection error:')); connection.once('open', function() { console.log("Connected!") var mongoDriver = mongoose.mongo; gfs = new Gridfs(connection.db, mongoDriver); });
@Kuzdogan Thank you very much, this works.
Sorry if the title is addressing gridfs-locking-stream and not gridfs-stream. I was using gridfs-locking-stream and had this problem: https://stackoverflow.com/questions/49325749/mongoose-and-gridfs-locking-stream-interaction I think gridfs-stream is not compatible with mongoose new version. I've also created this issue on gridfs-locking-stream github page: https://github.com/vsivsi/gridfs-locking-stream/issues/5