Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

424
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda