node.js - 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
即使改变位置,它也确实不起作用。那么为什么会这样呢?
解决方案
推荐阅读
- python - 是否可以从数据库进行 django 翻译?
- graphql - 测试 GraphQl 护照上下文
- java - 未调用杰克逊模块反序列化器
- vue.js - v-on:click 不起作用 - 动态添加的 html 元素
- laravel - Laravel 一对一(多态)不仅仅适用于特定模型
- reactjs - 为什么我们使用扩展运算符或 object.assign
- python - 熊猫:表的一部分方法的首选顺序
- kotlin - 在泛型类中创建具有 initialCapacity 的泛型 ArrayList
- sql - SQL如何获取父母及其所有孩子和孩子的孩子......等
- javascript - 用于区分 ipad Air 2019 和 iPad Pro2020 的 CSS 媒体查询