首页 > 解决方案 > TypeError:getDb 不是具有额外解构问题的函数

问题描述

由于问题是重复的,但我也有解决以下问题的方法。
我需要一个具体的答案来说明为什么会发生

这是我使用过的代码。

const { MongoClient } = require('mongodb'); //POSITION 1
const { get } = require('../routes/admin'); //POSITION 2 (THE CULPRIT)
const uri = "mongodb+srv://ang_007:5amc10014@cluster0.wea3a.mongodb.net/shop?retryWrites=true&w=majority";
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

let _db;

const mongoConnect = callback => {

   client.connect()
   .then(client => {
       console.log('conneced !');
       _db = client.db();
       callback();
   })
   .catch(err => {
       console.log(err);
       throw err;
   });

}

const getDb = () => {
  if(_db) {
      return _db;
  }
  throw 'No DB found!';
}

exports.mongoConnect = mongoConnect;
exports.getDb = getDb;

现在,当我尝试使用它时,它显示了如下所述的问题。
TypeError: getDb is not a function at Function.fetchAll (D:\Projects\Node-First-App - mongoDB\models\product.js:25:16) at exports.getIndex (D:\Projects\Node-First-App - mongoDB\controllers\shop.js:40:11) at Layer.handle [as handle_request] (D:\Projects\Node-First-App - mongoDB\node_modules\express\lib\router\layer.js:95:5) at next (D:\Projects\Node-First-App - mongoDB\node_modules\express\lib\router\route.js:137:13)

现在,如果我从上面的代码中删除const { get } = require('../routes/admin'); //POSITION 2(THE CULPRIT)它,它可以工作,即使我尝试像下面这样改变位置。

const { get } = require('../routes/admin'); //POSITION 2(THE CULPRIT)
const { MongoClient } = require('mongodb'); //POSITION 1

即使改变位置,它也确实不起作用。那么为什么会这样呢?

标签: node.jsmongodbecmascript-2017

解决方案


推荐阅读