我的代码:
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');
});
});
我的mp3文件已成功写入数据库。 现在我的目标是使用express创建路由,以便我可以使用它作为我的angular2应用程序中的提供程序的API。
server.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');
});
});
在我的代码中的某处,我无法使用gridFS找到在Db中编写的歌曲。 gridFS API的链接gridFS API Link
我想使用ionic2创建一个包含搜索栏的应用程序,当我输入歌曲名称时,它会显示歌曲并且我可以播放它。
我在1周内挣扎了这3次写在堆栈上但无法得到答案。
答案 0 :(得分:0)
我打赌你是服务器端web开发的新手,因为你的问题有点错过了创建node.js应用程序的全部要点。
编写服务器时,目标是服务器无法访问客户端计算机上的文件。这意味着您的应用程序充当瘦客户端。不要混淆node.js在您的计算机上运行:它创建了自己的模拟服务器,即使它位于您使用的同一台计算机上,它也可以作为一台真正遥远的计算机。出于这个原因,你无法修改项目库之外的文件,或者即使你可以修改它也不是什么node.js。
如果您想要一个专门修改计算机上文件的程序,您应该学习一种胖客户端编程语言,如C,C ++或Java。它们只能在您的计算机上运行,广告可以完全访问您的任何文件。
如果您因任何原因坚持使用JavaScript,它也有能力修改您的文件,但它仍然不是它的目的。您必须赋予它特殊权限,并且您将所有个人文件访问浏览器仍然很奇怪。但是在客户端这个Javascript代码id,即你不需要node.js,也不需要表达。客户端代码可以使用单个浏览器编写和运行。查看this article了解有关它的更多信息。
但是如果你仍然相信node
是你的方式,那么你还有一些选择。首先,但我不认为这是你的答案:写一个上传网站,将mp3文件上传到你的服务器(仍然在同一台计算机上,但把它放在项目位置)。它应该工作并且看起来像一个真实的网站(就像node.js一样)。最后你要求的东西可以实现,但它真的很糟糕,你可以尝试从应用程序路径中引用它,如
var fs = require('fs'),
path = require('path'),
filePath = path.join(__dirname, '../outerfile.mp3')
filePath2 = path.join('/var/outerfile.mp3');
然而,它可能依赖于平台,它将如何运行并且根本不可能正常工作。
我的最后建议:你应该考虑为你的项目使用另一种语言。