Lire le fichier avec node.js, la mangouste, le gridfs-stream
Je suis à l'aide de la mangouste et gridfs les cours d'eau pour stocker et lire des fichiers à partir de mongodb. Je suis l'exemple ici: https://github.com/aheckmann/gridfs-stream
L'écriture de fichiers en db fonctionne bien mais je rencontre un problème pour lire les fichiers.
Ce que l'mongodb semble (montrer les collections)
fs.chunks
fs.files
Ce que le fichier d'index de l'air (db.fs.les fichiers.find())
{ "_id" : ObjectId("5140392659851df70b000001"),
"filename" : "cover",
"contentType" : "binary/octet-stream",
"length" : 85734,
"chunkSize" : 262144,
"uploadDate" : ISODate("2013-03-13T08:30:30.299Z"),
"aliases" : null,
"metadata" : null,
"md5" : "4476b26067daa0677978ba501308a35d" }
Puis-je utiliser ce code pour obtenir un fichier nommé "couvrir"
...
var gfs = Grid(mongoose.connection.db, mongoose.mongo)
var readstream = gfs.createReadStream('cover')
Une erreur s'est produite:
Error: cover does not exist
at self.collection.self.fileId (/mypath/node_modules/mongoose/node_modules/mongodb/lib/mongodb/gridfs/gridstore.js:198:26)
at Cursor.nextObject (/mypath/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:654:35)
at Cursor.close (/mypath/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:960:5)
at Cursor.nextObject (/mypath/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:654:17)
at Cursor.nextObject.commandHandler (/mypath/node_modules/mongoose/node_modules/mongodb/lib/mongodb/cursor.js:631:14)
at Db._executeQueryCommand (/mypath/node_modules/mongoose/node_modules/mongodb/lib/mongodb/db.js:1702:5)
at g (events.js:185:14)
at EventEmitter.emit (events.js:115:20)
at Server.Base._callHandler (/mypath/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/base.js:130:25)
at Server.connect.connectionPool.on.server._serverState (/mypath/node_modules/mongoose/node_modules/mongodb/lib/mongodb/connection/server.js:517:20)
Je l'ai googlé et trouvé quelques liens relatifs:
https://github.com/mongodb/node-mongodb-native/issues/621
- si je remplace le "nom de fichier" avec "5140392659851df70b000001", il fonctionne:
var readstream = gfs.createReadStream('5140392659851df70b000001')
. Je suppose que la raison est liée à la configuration de la clé? - Vous pouvez également regarder le pilote de flux de mise en œuvre de mongodb.github.com/node-mongodb-native/api-generated/...
- Juste par curiosité, êtes-vous de stocker une référence au fichier dans une mangouste document créé? Je suis à la recherche dans l'aide de GridFS et je me demandais comment les gens de la mettre en œuvre.
- fs.fichiers stocke toutes les informations de fichier lors de la fs.morceaux stocke les données du fichier. Mongo utilise ObjectId("5140392659851df70b000001") dans fs.fichiers pour rechercher les données dans fs.des morceaux. Afin de fs.fichiers stocker la référence au réel des données de morceaux.
Vous devez vous connecter pour publier un commentaire.
L'exemple de code sur GitHub est un peu trompeur; au départ, j'ai reçu le même message d'erreur que vous avez fait. Dans mon cas, c'est dû au fait que j'ai été de tenter de lire le fichier avant de l'écrire flux en avait fini. J'ai résolu ce problème en faisant de la lecture dans le gestionnaire d'événement pour
"close"
:qu'est-ce que la couverture de donner un format de fichier que d'écrire ou de lire