【问题标题】:Error : Callback function is not a function错误:回调函数不是函数
【发布时间】:2020-05-09 11:39:38
【问题描述】:

我有服务器文件和 db.js 文件(连接到 db)。在exports.connect 中,我使用带有'done' 参数的函数(它是回调函数)。但是“完成()”不起作用,并在控制台中写入错误“完成不是函数”。 我能做些什么? server.js:

let db = require("./db"); 
let MongoClient = require("mongodb").MongoClient;
let ObjectID = require("mongodb").ObjectID;

app.listen(3164, function() {
  console.log("API app started");
});
db.connect("mongodb://localhost:27017",{useUnifiedTopology: true,useNewUrlParser: true},err => {
  if (err) {
     console.log(err);
    }
  });

db.js:

let MongoClient = require("mongodb").MongoClient;
let state = {
  db: null
};

exports.connect = function(url, done) {
  if (state.db) {
    return done();
  }
  MongoClient.connect(url, { useUnifiedTopology: true }, function(err, db) {
    if (err) {
      return done(err);
    }
    state.db = db;
    done();
  });
};
exports.get = function() {
  return state.db;
};

控制台日志:TypeError: done 不是函数

在 /home/bukrole/db.project/db.js:16:5

【问题讨论】:

    标签: node.js


    【解决方案1】:

    你已经声明了函数connect(url, done),它只接受2个参数,在文件server.js中你用3调用它(第二个是一个对象)。您必须将您的函数声明修改为function connect(url, params, done)

    【讨论】:

      【解决方案2】:

      在db.js改

      exports.connect = function(url, done) {
      

      到

      exports.connect = function(url, options, done) {
      

      因为您通过三个参数将函数调用为db.connect("mongodb://localhost:27017",{useUnifiedTopology: true,useNewUrlParser: true},err => {。

      注意

      但是你没有使用 db.js 文件中的选项,最好避免在调用自身时这样做

      【讨论】:

        猜你喜欢
        • 2015-10-20
        • 1970-01-01
        • 1970-01-01
        • 2017-03-04
        • 2019-06-09
        • 1970-01-01
        • 1970-01-01
        • 2014-01-31
        • 2019-09-22
        相关资源
        最近更新 更多