Использование function()
для определения exports.connect
и обратного вызова к MongoClient.connect
приводит к изменению привязки this
("context") в теле функции к самой функции.Чтобы избежать этого, используйте синтаксис «Стрелка функции» ES6, который не меняет привязки контекста:
var MongoClient = require("mongodb").MongoClient;
var url = "mongodb://localhost:27017";
module.exports = {
resource: null,
connect: () => {
MongoClient.connect(
url,
(err, db) => {
if (err) throw err;
console.log("Connected!");
this.resource = db; // Updating the object's attribute
}
);
},
};
Или вы можете переместить определение connect
за пределы объекта и назначить exports.resource
черезиспользование полного пути к объекту, например:
var MongoClient = require("mongodb").MongoClient;
var url = "mongodb://localhost:27017";
module.exports = {
resource: null,
connect: undefined
},
};
module.exports.connect = function() {
MongoClient.connect(
url,
function(err, db) {
if (err) throw err;
console.log("Connected!");
module.exports.resource = db; // Updating the object's attribute
}
);
};