2017-05-09 10 views
1

マイコード:私はgridFSを使用して保存したmongodbから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'); 
}); 
}); 

私のmp3ファイルをDBに正常に書き込まれています。 私の目標はexpressを使ってルートを作成して、私がangle2アプリのプロバイダとして使っている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に書かれた曲を見つけることができません。 link for gridFS API gridFS API Link

検索バーを含むionic2を使用してアプリケーションを作成したいのですが、曲名を入力すると曲が表示され、再生できます。

私はこの3回をスタックに書きましたが、答えを得ることができませんでした。

+0

コード全体をダウンロードしてデバッグしようとすると、私をGitHubリポジトリにリダイレクトできますか? –

答えて

0

あなたは、あなたの質問がnode.jsアプリケーションの作成の全ポイントを逃しているので、あなたはサーバーサイドWeb開発の初心者だろうと思います。

サーバーを作成する際には、サーバーがクライアントのコンピュータ上のファイルにアクセスできないことが重要です。つまり、アプリはシンクライアントとして機能します。 node.jsがあなたのコンピュータ上で実行されるのを混同しないでください。それはあなたが使っているのと全く同じコンピュータ上にあっても、本当の遠方のコンピュータとして機能する自身の模擬サーバを作成します。このため、プロジェクトライブラリの外部にあるファイルを変更することはできません。もし可能であれば、それはハックになります。node.jsが作られたものではありません。

プログラムでコンピュータのファイルを特に変更する場合は、C、C++、Javaなどのシッククライアントプログラミング言語を学ぶ必要があります。あなたのコンピュータの広告でのみ実行され、あなたのファイルにフルアクセスできます。

何らかの理由でJavaScriptを使用している場合は、ファイルを変更する権限もありますが、意図したとおりではありません。それに特別な許可を与えなければならず、あなたの個人的なファイルすべてにブラウザにアクセスできることは変です。しかし、クライアント側のこのJavascriptコードIDはnode.jsを必要とせず、どちらも表現しません。クライアントコードは、単一のブラウザで記述して実行することができます。詳細については、this articleをご覧ください。

しかし、まだnodeがあなたの方法であると確信している場合は、まだいくつかの選択肢があります。まず、私はそれがあなたの答えだとは思わない:mp3ファイルをあなたのサーバにアップロードするアップロードウェブサイトを書く(同じコンピュータ上にあるがプロジェクトの場所に置く)。それは実際のWebサイト(node.jsが作成されたもののようなもの)のように機能し、動作するはずです。そして最後に何を求めているが、ちょっと達成することができ、それはreaaaaallyハックだ、あなたは試してみて、それはおそらく実行しないであろうか、おそらく、プラットフォームに依存ししかし

var fs = require('fs'), 
path = require('path'),  
filePath = path.join(__dirname, '../outerfile.mp3') 
filePath2 = path.join('/var/outerfile.mp3'); 

のようなアプリケーション・パスからそれを参照することができますまったく働くこと。

私の最終的なアドバイス:プロジェクトに別の言語を使用することを検討する必要があります。

+0

ダニエル・グラント、私のポストの貴重な時間を与えてくれてありがとう。私は初心者ですが、私が直面している問題で私を助けることができるように、私が働いていることすべてを説明したい。私の質問を編集中です。 – Aditya

+0

更新された質問をご覧ください。お手伝いができたらお知らせください。 – Aditya

関連する問題