Node.js 错误:回调函数不是函数
我有服务器文件和db.js文件(连接到db)。在exports.connect中,我使用带有“done”参数的函数(它是回调函数)。但“done()”不起作用,在控制台中写入错误“done不是函数”。 我能做什么? server.js:Node.js 错误:回调函数不是函数,node.js,Node.js,我有服务器文件和db.js文件(连接到db)。在exports.connect中,我使用带有“done”参数的函数(它是回调函数)。但“done()”不起作用,在控制台中写入错误“done不是函数”。 我能做什么? server.js: let db = require("./db"); let MongoClient = require("mongodb").MongoClient; let ObjectID = require("mongodb").ObjectID; app.liste
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中,您已经声明了函数
connect(url,done)
,它只需要2个参数,并且在文件server.js
中,您使用3调用它(第二个是对象)。您必须将函数声明修改为function connect(url,params,done)
您已经声明了只需要2个参数的函数connect(url,done)
,并且在文件server.js
中您用3个参数调用它(第二个是对象)。您必须在db.js
Change中将函数声明修改为function connect(url,params,done)
exports.connect = function(url, done) {
到
因为您正在以db.connect(“mongodb://localhost:27017“,{useUnifiedTopology:true,useNewUrlParser:true},err=>{
通过三个参数
注意
但是您没有使用db.js文件中的选项,最好在
db.js
Change中调用自己时避免使用这些选项
exports.connect = function(url, done) {
到
因为您正在以db.connect(“mongodb://localhost:27017“,{useUnifiedTopology:true,useNewUrlParser:true},err=>{
通过三个参数
注意
但是您没有使用db.js文件中的选项,最好在调用自身时避免使用这些选项