gridfs-stream icon indicating copy to clipboard operation
gridfs-stream copied to clipboard

mongoose and gridfs-locking-stream interaction

Open ghasemikasra39 opened this issue 8 years ago • 9 comments

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

ghasemikasra39 avatar Mar 21 '18 12:03 ghasemikasra39

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 :

  • "mongoose": "^5.0.9",
  • MongoDB Version | 3.6.2
  • "gridfs-stream": "^1.1.1"

Best regards,

Arn

arn-the-long-beard avatar Apr 13 '18 15:04 arn-the-long-beard

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

deresegetachew avatar May 02 '18 14:05 deresegetachew

Hey I have the same issue ... Any solution found ? I would like to avoid @deresegetachew 's one ;)

ldevalbray avatar Oct 13 '18 12:10 ldevalbray

Hey I have the same issue ... Any solution found ?

stelapo avatar Dec 13 '18 11:12 stelapo

Any solutions ?

ghost avatar Jan 23 '19 16:01 ghost

for reference i have encountered this. two difference instances of this happened with my code --

  1. mongo server isn't accessible for whatever reason

  2. 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

zenbert5 avatar Jan 24 '19 18:01 zenbert5

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);
});

kuzdogan avatar Oct 03 '19 20:10 kuzdogan

Refer to here: #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);
});

Thanks @kuzdogan This resolved my issue .

MZeeshan373 avatar Feb 23 '21 15:02 MZeeshan373

Refer to here: #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);
});

@Kuzdogan Thank you very much, this works.

Chris-QIU avatar Jun 19 '21 05:06 Chris-QIU