在节点js中导出数据库对象

时间:2018-12-02 15:00:19

标签: node.js mongodb

我真的不明白。假设我已经选择了mongodb

let db;
app.use(bodyParser.json());
app.use('/api/todos', todosRoutes); // routes in separate file

MongoClient.connect(
  uri, 
  {useNewUrlParser: true}, 
  (err, client) => {
    if(err) {
      return console.log(err)
    }
    db = client.db('todosApp');
    module.exports = db; // how can I export this db so my routes can use it?
    app.listen(PORT, () => {
      console.log(`app is listening on port ${PORT}`);
    })
  }
)

在我的路线上

const db = require('../app').db;
const collectionName = 'todos';

router.get('/', (req, res) => {
  db.collection(collectionName)
    .find()
    .toArray()
    .then(collection => res.json(collection))
    .catch(err => res.status(500).json(err))
})

我总是会得到一个db未定义的错误,我可以理解,但那时却找不到如何处理?

1 个答案:

答案 0 :(得分:1)

require()设置require('../app').db之前,您app同步了该文件并获得了exports.db的值。

.db实际上存在之后,您应该只在以后访问它。