db.js 文件:
const MongoClient = require('mongodb').MongoClient;
const state = {
db: null
};
exports.connect = (url, done) =>{
if(state.db) {
return done();
}
MongoClient.connect(url, {}, (err, db) => {
if(err) {
return done(err);
}
state.db = db;
done();
})
};
exports.get = () => {
return state.db;
};
Server.js 文件:
const db = require('./db');
db.connect('mongodb://localhost:27017/Motoshield', (error) => {
if(error){
return console.log(error)
app.listen(9000,function(){
console.log('Api app started');
});
});
app.get('/api/new-products',function(req, res){
db.get().collection("products").find({},{
projection: {
categories:0,
characteristics: 0,
disadvantage: 0,
img2: 0,
img3: 0,
img4: 0,
img5: 0,
img6: 0,
img7: 0,
img8: 0
}
}).sort({_id:-1}).limit(6).toArray( (error,docs) => {
if(error) {
console.log(error);
return res.sendStatus(500);
}
res.send(docs);
});
});
我正在尝试在多个地方实现数据库连接而不覆盖它以在模型等中使用它。作为响应,我收到一个错误:
TypeError: db.get(...).collection 不是函数
我只是在学习,也许有更好的实现,也有可能有一个如何更好地连接数据库的例子
添加 state.db = db.db('数据库名称');