我正在尝试运行节点程序但是我得到类型错误db.collection未定义请不要重复这个问题,因为我已经阅读了所有没有解决我的问题的答案。我有一个config.js,它保存我的dbconnect方法
let MongoClient = require('mongodb').MongoClient;
require('dotenv').config();
function connectdb()
{
//console.log(process.env.url);
return new Promise((resolve,reject)=>
{
MongoClient.connect(process.env.url,function(err, db) {
if (err){
reject("database connection error");
}
else
{
resolve(db);
}
});
});
}
exports.connectdb=connectdb;
然后我有一个routes.js
let express = require('express');
let app = express();
let connectdb=require("H:/Student/src/config/config.js").connectdb;
let student=require("H:/Student/src/services/studentservice.js").student;
module.exports = function (app) {
app.get("/",async function (req, res) {
try{
let a1= await connectdb();
let result=await student(a1);
res.send(result);
}
catch(err)
{
console.log(err);
}
});
};
然后我有一个服务从集合
获得结果require('dotenv').config();
function student(db)
{
return new Promise((resolve,reject)=>
{
db.collection(process.env.collection).find({}).toArray(function(err, result) {
if (err)
{
reject("database query error");
}
else
{
resolve(result);
}
});
});
}
exports.student=student;
然后我有主index.js文件
let express = require('express');
require('dotenv').config();
let bodyParser =require("body-parser");
let MongoClient = require('mongodb').MongoClient;
let app = express();
require("./src/routes/user.js")(app);
app.listen(3000,() => console.log('Example app listening on port 3000!'));
我得到了typeError:db.collection没有定义但是在控制台日志中我可以看到传递了数据库对象。我正在使用mongodb 2.2.3。