2017-05-09 1 views
1

私はnode.jsでmongoを使用していますが、mongodb npmパッケージを使用して、dbと私のコードを次のように接続しています。エラー:デフォルトのエンジンが指定されておらず、拡張機能が提供されていませんでした。ブラウザで

var express = require('express'); 
var MongoClient = require('mongodb').MongoClient; 
var url = "mongodb://localhost:27017/STUDENT"; 

var app = express(); 


MongoClient.connect(url, function(err, db) { 

    console.log("Connected correctly to server"); 
    findDOcuments(db); 
    db.close(); 
}); 

var entireDoc = ''; 
var data = function(data, id){ 
    if(id == 'records'){ 
    entireDoc = JSON.stringify(data); 
    } 
} 

var findDOcuments = function(db) { 
    // Get the records collection 
    var collection = db.collection('records'); 
    // Find some records 
    collection.find({}).toArray(function(err, docs) { 
    console.log("Found the following records"); 
    console.log(docs); 
    data(docs,'records'); 
    }); 
} 

app.get('/getInfo', function(req, res){ 
    res.render(entireDoc); 
}) 
app.listen(3000); 

上記のコードは、ブラウザでレンダリングしている間に、ブラウザで上記のエラーが発生します。いずれにせよこのことを助けることができます。

答えて

3

作業するタイプのビューエンジンを明示する必要があります。例えばEJS、ヒスイ、パブ、ハンドルバーまたはプレーンHTML ...

はミドルウェア以下のコード内で次の行を追加します。

//ビューディレクトリはproject_folder /ビューになります。だから基本的にレンダリングするテンプレートファイル名を与えるとき、それはどこを見つけるべきか知っているはずです。下のパスが設定されます。

app.set('views', path.join(__dirname, 'views')); 

//ビューエンジンを指定しても、あなたが--save EJS

app.set('view engine', 'ejs'); 

をインストールNPMのようにインストールする必要があり、それを使用するので、あなたは( '製品')res.renderを言うとき。

それはあなたが直接文字列を送信する場合、あなたは(res.sendを使用することができますまた、project_folder /ビュー/

内product.ejsファイルを検索します)か、JSONを送信する場合は、あなたが使用することができますres.json()。レンダリングはビューエンジンからビューテンプレートをレンダリングするために使用される

+0

は – Surendra

1
app.use(
    express.static(path.join(__dirname, 'public'), { 
     etag: false 
    }) 
); 
+3

回答は、常にいくつかの説明だけではなく、コードスニペットを含める必要があります...ちょうどその作業res.jsonのみ送信ありがとう – hardillb

関連する問題