我有服务器文件和db.js文件(连接到db)。在exports.connect中,我使用带有'done‘参数的函数(它是回调函数)。但是'done()‘不是工作,而写的错误’in不是控制台中的函数‘。我能做什么?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不是一个函数
at /home/bukrole/db.project/db.js:16:5
发布于 2020-01-23 08:50:43
您已经声明了函数connect(url, done),它只接受2个参数,在文件server.js中,您用3调用它(第二个参数是一个对象)。您必须将函数声明修改为function connect(url, params, done)。
发布于 2020-01-23 08:50:45
在db.js变化中
exports.connect = function(url, done) {至
exports.connect = function(url, options, done) {因为您通过三个params调用函数为db.connect("mongodb://localhost:27017",{useUnifiedTopology: true,useNewUrlParser: true},err => {。
注意事项
但是您没有使用db.js文件中的选项,最好是在调用自身时避免使用这些选项。
https://stackoverflow.com/questions/59874504
复制相似问题