首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:回调函数不是函数

错误:回调函数不是函数
EN

Stack Overflow用户
提问于 2020-01-23 08:46:54
回答 2查看 42关注 0票数 0

我有服务器文件和db.js文件(连接到db)。在exports.connect中,我使用带有'done‘参数的函数(它是回调函数)。但是'done()‘不是工作,而写的错误’in不是控制台中的函数‘。我能做什么?server.js:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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不是一个函数

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-23 08:50:43

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

票数 1
EN

Stack Overflow用户

发布于 2020-01-23 08:50:45

db.js变化中

代码语言:javascript
运行
复制
exports.connect = function(url, done) {

代码语言:javascript
运行
复制
exports.connect = function(url, options, done) {

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

注意事项

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59874504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档