Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

423
Views
Escribí un archivo mp3 en mi base de datos y alojé el servidor, pero en la respuesta no puedo ver ese archivo.

Creé la base de datos y escribí el archivo mp3 en la base de datos. Ahora creé un servidor y usé el enrutador usando express. Pero no puedo ver la respuesta. Se muestra a continuación.

servidor alojado en localhost 8080/api/songs

Mi código es el siguiente:

server.js

 var express = require('express'); var app = express(); var mongoose = require('mongoose'); var morgan = require('morgan'); var bodyParser = require('body-Parser'); var methodOverride = require('method-override'); var cors = require('cors'); mongoose.connect('mongodb://localhost/aHolyBoly'); app.use(morgan('dev')); app.use(bodyParser.urlencoded({ 'extended': 'true' })); app.use(bodyParser.json()); app.use(bodyParser.json({ type: 'application/vnd.api+json' })); app.use(methodOverride()); app.use(cors()); app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); //res.header('Access-Control-Allow-Methods', 'DELETE, PUT'); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); var Songs = mongoose.model('Songs', { title: String }); app.get('/api/songs', function (req, res) { console.log("fetching songs..."); Songs.find(function (err, songs) { if (err) res.send(err) res.json(songs); //console.log('Songs',+JSON.stringify(Songs)); }); }); app.listen(8080); console.log("App listening on port 8080");

¿Cómo puedo ver la respuesta en el archivo console.ie my songs.mp3?

storeAudio.js

 var mongoose = require('mongoose'); var fs = require('fs'); var Grid = require('gridfs-stream'); Grid.mongo=mongoose.mongo; //establish mongoDB connection mongoose.Promise = global.Promise; var conn = mongoose.createConnection('mongodb://localhost:27017/aHolyBoly'); conn.once('open',function(){ var gfs = Grid(conn.db); // var db = new mongo.Db('aHolyBoly', new mongo.Server("127.0.0.1", 27017)); //var gfs = Grid(db, mongo); var writeStream = gfs.createWriteStream({ filename:'song1.mp3' }); fs.createReadStream('../list/hero.mp3').pipe(writeStream); writeStream.on('close',function(file){ console.log(file.filename +'Written to db'); }); });

Puntos: 1.) He almacenado el archivo mp3 en la base de datos usando gridFs-stream.

2.) Ahora quiero crear una API para poder alojar mi servidor en ella y mi interfaz usa esos datos con la ayuda de la API.

3.) La interfaz solo obtendrá los datos, es decir, el archivo mp3.

about 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Lo que debe entender es que cuando usa GridFS de mongo, creará dos colecciones, a saber, fs.files y fs.chuncks, y cualquier otro modelo que haya creado no tiene su archivo, sino que lo que puede hacer es vincular esos archivos en su modelo. Si está dispuesto (puede ser por ahora) a recibir solo un archivo que haya almacenado con el nombre de archivo canción1.mp3, el código indicado a continuación funcionará para usted. ¡Espero que esto ayude!

 var express = require('express'); var app = express(); var mongoose = require('mongoose'); var morgan = require('morgan'); var bodyParser = require('body-Parser'); var methodOverride = require('method-override'); var cors = require('cors'); mongoose.Promise = global.Promise var conn = mongoose.createConnection('mongodb://localhost/aHolyBoly'); var Grid = require('gridfs-stream'); Grid.mongo=mongoose.mongo; let gfs; conn.once('open', function () { gfs = Grid(conn.db); }); app.use(morgan('dev')); app.use(bodyParser.urlencoded({ 'extended': 'true' })); app.use(bodyParser.json()); app.use(bodyParser.json({ type: 'application/vnd.api+json' })); app.use(methodOverride()); app.use(cors()); app.use(function (req, res, next) { res.header("Access-Control-Allow-Origin", "*"); //res.header('Access-Control-Allow-Methods', 'DELETE, PUT'); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next(); }); //song model should not be created like this //var Songs = mongoose.model('Songs', { // title: String //}); app.get('/api/songs', function (req, res) { console.log("fetching songs..."); //read from mongodb var readstream = gfs.createReadStream({ filename: 'song1.mp3' }); // set response header res.writeHead(200, { 'Content-Type': 'audio/mpeg', }); readstream.pipe(res); }); app.listen(8080); console.log("App listening on port 8080");

Para aclarar cómo se puede vincular un archivo a un modelo, proporcioné un código a continuación:

 var mongoose = require('mongoose') var Schema = mongoose.Schema const UserFile = new Schema({ username: { type: String, unique: true} file: { type: String } }) // create the model to export var UserFileModel = mongoose.model('UserFile', UserFile) module.exports = schemaModel

Supongamos que ha almacenado un archivo para un usuario. Y almacenó ese nombre de archivo en el campo de archivo de UserFileModel con el nombre de usuario correspondiente. Luego, puede obtener fácilmente el archivo del usuario correspondiente en la siguiente ruta como se muestra a continuación:

 var UserFileModel = require('path-to-UserFileModel'); router.get('/api/user/file/:username', function (req, res) { UserFileModel.findOne({username: req.params.username}, function(err, doc){ //read from mongodb var readstream = gfs.createReadStream({ filename: doc.file }); // set response header res.writeHead(200, { 'Content-Type': 'audio/mpeg', }); readstream.pipe(res); }) });
about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!