Šim*_*das 5 javascript mongodb node.js express
我有一个db.js文件,我在其中设置MongoDB连接.我想将数据库对象导出到我的主app.js文件中:
// db.js
require('mongodb').MongoClient.connect(/* the URL */, function (err, db) {
module.exports = db;
});
// app.js
var db = require('./db');
app.get('/', function (req, res) {
db.collection(/* … */); // throws error
});
Run Code Online (Sandbox Code Playgroud)
错误是:
TypeError:对象#没有方法'集合'
那么,我该如何db正确导出对象呢?
// database.js\nvar MongoClient = require(\'mongodb\').MongoClient,\n Q = require(\'q\'),\n connect = Q.nbind(MongoClient.connect, MongoClient);\n\nvar promise = connect(/* url */); \n\nmodule.exports = {\n connect: function () {\n return promise;\n }\n}\n\n// app.js\nvar database = require(\'./database\');\n\ndatabase.connect()\n .then(function (db) {\n app.get(\'/\', function (req, res) {\n db.collection(/* \xe2\x80\xa6 */);\n });\n })\n .catch(function (err) {\n console.log(\'Error connecting to DB:\', err);\n })\n .done();\nRun Code Online (Sandbox Code Playgroud)\n\n(我在这里使用很棒的Q库。)
\n\n下面是我答案的旧版本,为了历史而留下(但如果你不想使用承诺,而不是走那条路,你应该使用马特的答案)。
\n\n它的缺点是每次你打开一个连接require(\'database.js)(真糟糕!)
// DO NOT USE: left for the sake of history\n\n// database.js\nvar MongoClient = require(\'mongodb\').MongoClient;\n\nfunction connect(cb) {\n MongoClient.connect(/* the URL */, cb);\n}\n\nmodule.exports = {\n connect: connect\n}\n\n// app.js\nvar database = require(\'./database\');\n\ndatabase.connect(function (err, db) {\n app.get(\'/\', function (req, res) {\n db.collection(/* \xe2\x80\xa6 */);\n });\n});\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
1065 次 |
| 最近记录: |